1、首先确保solr服务器已开启,本地通过http://ip:端口号/solr可以访问到
2、pom.xml中引用solrJ.jar包
<properties>
<solrj.version>4.10.3</solrj.version>
</properties>
<!-- solr客户端
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>${solrj.version}</version>
</dependency>
3、编写测试代码
添加/修改,具体说明请参考注释:
@Test
public void add() throws Exception{
//单机版solr连接时,创建HttpSolrServer对象;集群版创建CloudSolrServer对象
SolrServer solrServer = new HttpSolrServer("http://192.168.63.117:8080/solr/collection1");
//创建文档对象SolrInputDocument
SolrInputDocument document = new SolrInputDocument();
//向文档中添加域,必须有id域,域的名称必须在schema.xml中定义
document.addField("id",123);
document.addField("item_title","solr测试1");
document.addField("item_price",1100000);
document.addField("item_category_name","林哈哈");
//把文档对象写入索引库
solrServer.add(document);
//提交
solrServer.commit();
}
删除:
@Test
public void deleteByDocumentId() throws Exception{
SolrServer solrServer = new HttpSolrServer("http://192.168.63.117:8080/solr/collection1");
solrServer.deleteById("change.me");
//提交
solrServer.commit();
}
@Test
public void deleteByQuery() throws Exception{
SolrServer solrServer = new HttpSolrServer("http://192.168.63.117:8080/solr/collection1");
solrServer.deleteByQuery("title:李");
//提交
solrServer.commit();
}
查询:
@Test
public void searchDocument() throws Exception{
//创建一个模拟solr服务器的对象
SolrServer solrServer = new HttpSolrServer("http://192.168.63.117:8080/solr/collection1");
//创建一个查询对象
SolrQuery query = new SolrQuery();
//设置查询条件、过滤条件、分页条件、排序条件、高亮
query.setQuery("手机");
//分页条件
query.setStart(0);
query.setRows(10);
//设置默认搜索域
query.set("df","item_keywords");
//设置高亮
query.setHighlight(true);
query.addHighlightField("item_title");
query.setHighlightSimplePre("<em>");
query.setHighlightSimplePost("</em>");
//执行查询,得到一个Response对象
QueryResponse response = solrServer.query(query);
//取查询结果
SolrDocumentList solrDocuments = response.getResults();
System.out.println("总记录数:"+solrDocuments.getNumFound());
for(SolrDocument solrDocument : solrDocuments){
System.out.println(solrDocument.get("id"));
//给查询出的结果标题设置高亮
Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
List<String > list = highlighting.get(solrDocument.get("id")).get("item_title");
String item_title;
if(list != null && list.size()>0){
item_title = list.get(0);
}else {
item_title = (String)solrDocument.get("item_title");
}
System.out.println(item_title);
System.out.println(solrDocument.get("item_sell_point"));
System.out.println(solrDocument.get("item_price"));
System.out.println(solrDocument.get("item_image"));
System.out.println(solrDocument.get("item_category_name"));
}
4、执行
执行成功,返回浏览器查询是否删除成功;