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")); } //得到实体对象 List tmpLists=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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。