solr在java中的使用实例代码
SolrJ是操作Solr的Java客户端,它提供了增加、修改、删除、查询Solr索引的JAVA接口。SolrJ针对Solr提供了Rest的HTTP接口进行了封装,SolrJ底层是通过使用httpClient中的方法来完成Solr的操作。
jar包的引用(mavenpom.xml):
org.apache.solr solr-solrj 5.3.1 junit junit 4.11 org.slf4j slf4j-log4j12 1.7.7 commons-logging commons-logging 1.1.3 
java代码:
packageentity;
importjava.io.IOException;
importjava.util.List;
importorg.apache.solr.client.solrj.SolrQuery;
importorg.apache.solr.client.solrj.SolrServerException;
importorg.apache.solr.client.solrj.impl.HttpSolrClient;
importorg.apache.solr.client.solrj.response.QueryResponse;
importorg.apache.solr.common.SolrDocument;
importorg.apache.solr.common.SolrDocumentList;
importorg.apache.solr.common.SolrInputDocument;
publicclassSolrJTest{
//指定solr服务器的地址
privatefinalstaticStringSOLR_URL="http://localhost:8080/solr/";
/**
*创建SolrServer对象
*
*该对象有两个可以使用,都是线程安全的
*1、CommonsHttpSolrServer:启动web服务器使用的,通过http请求的
*2、EmbeddedSolrServer:内嵌式的,导入solr的jar包就可以使用了
*3、solr4.0之后好像添加了不少东西,其中CommonsHttpSolrServer这个类改名为HttpSolrClient
*
*@return
*/
publicHttpSolrClientcreateSolrServer(){
HttpSolrClientsolr=null;
solr=newHttpSolrClient(SOLR_URL);
returnsolr;
}
/**
*往索引库添加文档
*@throwsIOException
*@throwsSolrServerException
*/
publicvoidaddDoc()throwsSolrServerException,IOException{
//构造一篇文档
SolrInputDocumentdocument=newSolrInputDocument();
//往doc中添加字段,在客户端这边添加的字段必须在服务端中有过定义
document.addField("id","8");
document.addField("name","周新星");
document.addField("description","一个灰常牛逼的军事家");
//获得一个solr服务端的请求,去提交,选择具体的某一个solrcore
HttpSolrClientsolr=newHttpSolrClient(SOLR_URL+"my_core");
solr.add(document);
solr.commit();
solr.close();
}
/**
*根据id从索引库删除文档
*/
publicvoiddeleteDocumentById()throwsException{
//选择具体的某一个solrcore
HttpSolrClientserver=newHttpSolrClient(SOLR_URL+"my_core");
//删除文档
server.deleteById("8");
//删除所有的索引
//solr.deleteByQuery("*:*");
//提交修改
server.commit();
server.close();
}
/**
*查询
*@throwsException
*/
publicvoidquerySolr()throwsException{
HttpSolrClientsolrServer=newHttpSolrClient(SOLR_URL+"my_core/");
SolrQueryquery=newSolrQuery();
//下面设置solr查询参数
//query.set("q","*:*");//参数q查询所有
query.set("q","周星驰");//相关查询,比如某条数据某个字段含有周、星、驰三个字将会查询出来,这个作用适用于联想查询
//参数fq,给query增加过滤查询条件
query.addFilterQuery("id:[0TO9]");//id为0-4
//给query增加布尔过滤条件
//query.addFilterQuery("description:演员");//description字段中含有“演员”两字的数据
//参数df,给query设置默认搜索域
query.set("df","name");
//参数sort,设置返回结果的排序规则
query.setSort("id",SolrQuery.ORDER.desc);
//设置分页参数
query.setStart(0);
query.setRows(10);//每一页多少值
//参数hl,设置高亮
query.setHighlight(true);
//设置高亮的字段
query.addHighlightField("name");
//设置高亮的样式
query.setHighlightSimplePre("");
query.setHighlightSimplePost("");
//获取查询结果
QueryResponseresponse=solrServer.query(query);
//两种结果获取:得到文档集合或者实体对象
//查询得到文档的集合
SolrDocumentListsolrDocumentList=response.getResults();
System.out.println("通过文档集合获取查询的结果");
System.out.println("查询结果的总数量:"+solrDocumentList.getNumFound());
//遍历列表
for(SolrDocumentdoc:solrDocumentList){
System.out.println("id:"+doc.get("id")+"name:"+doc.get("name")+"description:"+doc.get("description"));
}
//得到实体对象
ListtmpLists=response.getBeans(Person.class);
if(tmpLists!=null&&tmpLists.size()>0){
System.out.println("通过文档集合获取查询的结果");
for(Personper:tmpLists){
System.out.println("id:"+per.getId()+"name:"+per.getName()+"description:"+per.getDescription());
}
}
}
publicstaticvoidmain(String[]args)throwsException{
SolrJTestsolr=newSolrJTest();
//solr.createSolrServer();
solr.addDoc();
solr.deleteDocumentById();
solr.querySolr();
}
}
  
参考文档:http://www.doc88.com/p-6763747939865.html
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。