<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>4.10.4</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.7.2</version>
</dependency>
添加数据:
@Test
public void addDocument() throws Exception {
//创建一个SolrServer对象,创建一个连接,参数solr服务的url
SolrServer solrServer = new HttpSolrServer("http://127.0.0.1:8080/solr/collection1");
//创建一个文档对象SolrInputDoCument
SolrInputDocument document = new SolrInputDocument();
//向文档对象中添加域,文档中必须包含一个id域,所有的域的名称必须在schema.xml中定义
document.addField("id", "doc01");
document.addField("item_title", "测试商品01");
document.addField("item_price", 1000);
//把文档写入索引库
solrServer.add(document);
//提交
solrServer.commit();
}
删除数据:
@Test
public void daleteDocument() throws Exception {
//创建一个SolrServer对象,创建一个连接,参数solr服务的url
SolrServer solrServer = new HttpSolrServer("http://127.0.0.1:8080/solr/collection1");
//按照文档id删除
//solrServer.deleteById("doc01");
//或者根据查询删除
solrServer.deleteByQuery("id:doc01");
//提交
solrServer.commit();
}
查询数据:
@Test
public void selectDocument() throws Exception {
//创建一个SolrServer对象,创建一个连接,参数solr服务的url
SolrServer solrServer = new HttpSolrServer("http://127.0.0.1:8080/solr/collection1");
//创建查询对象
SolrQuery solrQuery=new SolrQuery();
//设置查询条件
solrQuery.set("q","item_title:3");
//查询
QueryResponse query = solrServer.query(solrQuery);
//获得查询结果
SolrDocumentList results = query.getResults();
//获得查询记录数
long numFound = results.getNumFound();
System.out.println(numFound);
for (SolrDocument sd : results) {
String id=(String) sd.getFieldValue("id");
String item_title=(String) sd.getFieldValue("item_title");
String item_sell_point=(String) sd.getFieldValue("item_sell_point");
long item_price=(Long) sd.getFieldValue("item_price");
String item_desc=(String) sd.getFieldValue("item_desc");
String item_image=(String) sd.getFieldValue("item_image");
String item_category_name=(String) sd.getFieldValue("item_category_name");
System.out.println("========================================");
System.out.println("id:"+id);
System.out.println("item_title:"+item_title);
System.out.println("item_sell_point:"+item_sell_point);
System.out.println("item_price:"+item_price);
System.out.println("item_desc:"+item_desc);
System.out.println("item_image:"+item_image);
System.out.println("item_category_name:"+item_category_name);
}
}
设置条件:
//设置查询条件
query.set("q","item_title:3 AND item_desc:嘻嘻 OR item_sell_point:哈哈" );
设置分页:
//设置分页条件
query.setStart(1);
query.setRows(2);
设置高亮:
//开启高亮
query.setHighlight(true);
query.addHighlightField("item_title");
query.setHighlightSimplePre("<em>");
query.setHighlightSimplePost("</em>");
设置搜索域:
//设置默认搜索域
query.set("df", "item_title");