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());
}
}
}
}