您的位置:首页 > 其它

4.solrj对索引的增删改查

2015-08-29 11:15 351 查看
1.使用solrj版本为5.2.1

2.索引对象POJO

package com.szss.test.solrj;

import org.apache.solr.client.solrj.beans.Field;

import java.io.Serializable;
import java.util.Date;

public class Product implements Serializable {

@Field("id")
private String id;

@Field("product_full_name")
private String productFullName;

@Field("date_created")
private Date dateCreated;

@Field("last_updated")
private Date lastUpdated;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getProductFullName() {
return productFullName;
}

public void setProductFullName(String productFullName) {
this.productFullName = productFullName;
}

public Date getDateCreated() {
return dateCreated;
}

public void setDateCreated(Date dateCreated) {
this.dateCreated = dateCreated;
}

public Date getLastUpdated() {
return lastUpdated;
}

public void setLastUpdated(Date lastUpdated) {
this.lastUpdated = lastUpdated;
}
}


3.单元测试

package com.szss.test.solrj;

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.FacetField;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.util.Iterator;
import java.util.List;

public class SolrTest {
private SolrClient client;

//    @Before
//    public void init(){
//      client = new CloudSolrClient("192.168.7.1:2181,192.168.7.2:2181,192.168.7.3:2181");
//      client.setDefaultCollection("solr");
//    }

@Before
public void init() {
String urlString = "http://localhost:8989/solr/test";
client = new HttpSolrClient(urlString);
}

/**
* 全量索引
*/
@Test
public void fullImport() {
ModifiableSolrParams params = new ModifiableSolrParams();
params.set("qt", "/dataimport");
params.set("command", "full-import");
QueryResponse response = null;
try {
response = client.query(params);
} catch (Exception e1) {
e1.printStackTrace();
}
System.out.println(response);
}

/**
* 增量索引
*/
@Test
public void deltaImport() {
ModifiableSolrParams params = new ModifiableSolrParams();
params.set("qt", "/dataimport");
params.set("command", "delta-import");
QueryResponse response = null;
try {
response = client.query(params);
} catch (Exception e1) {
e1.printStackTrace();
}
System.out.println(response);
}

/**
* 查询
* @throws SolrServerException
* @throws IOException
*/
@Test
public void solrQuery() throws SolrServerException, IOException {
SolrQuery solrQuery = new SolrQuery();
solrQuery.setQuery("product_full_name:笔记本");
solrQuery.setStart(0);
solrQuery.setRows(10);//可以用于分页
solrQuery.addSort("product_full_name", SolrQuery.ORDER.asc);
QueryResponse response = client.query(solrQuery);
SolrDocumentList list = response.getResults();

for (Iterator iterator = list.iterator(); iterator.hasNext(); ) {
SolrDocument product = (SolrDocument) iterator.next();
System.out.println(product.get("product_full_name"));
}
}

/**
* 查询结果封装为实体
* @throws SolrServerException
* @throws IOException
*/
@Test
public void solrQueryBean() throws SolrServerException, IOException {
SolrQuery solrQuery = new SolrQuery();
solrQuery.setQuery("product_full_name:笔记本");
solrQuery.setStart(0);
solrQuery.setRows(10);//可以用于分页
solrQuery.addSort("product_full_name", SolrQuery.ORDER.asc);
QueryResponse response = client.query(solrQuery);
List<Product> list = response.getBeans(Product.class);

for (Iterator iterator = list.iterator(); iterator.hasNext(); ) {
Product product = (Product) iterator.next();
System.out.println(product.getProductFullName());
}
}

/**
* 匹配结果的数量
* @throws SolrServerException
* @throws IOException
*/
@Test
public void queryFacet() throws SolrServerException, IOException {
SolrQuery solrQuery = new SolrQuery();
solrQuery.setQuery("product_full_name:‘笔记本’");
solrQuery.setFacet(true);
solrQuery.addFacetField("product_full_name");

QueryResponse queryResponse = client.query(solrQuery);

List<FacetField> facetFields = queryResponse.getFacetFields();

for (FacetField field : facetFields) {
System.out.println(field.getName());

List<FacetField.Count> counts = field.getValues();

for (FacetField.Count count : counts) {
System.out.println(count.getName() + " : " + count.getCount());
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: