前面博文说到,Solr是基于Lucene的搜索引擎,那么如何使用引擎呢?或者说如何通过引擎的API接口来操作Solr服务呢?这就是接下来要研究的使用SolrJ来操作管理索引库。接下来我们来使用SolrJ进行Solr的增删查改和查询结果高亮显示。
SolrJ是访问Solr服务的Java客户端,提供索引和搜索的请求方法,Solr通常嵌入在业务系统中,通过SolrJ的API接口操作Solr服务。
1.要通过Java API操作Solr服务,首先肯定是在web项目中导入SolrJ所需的jar包。jar包路径为solr的dist目录下,如下图
将jar包复制到lib目录下,注意如果是java工程需手动右键build Path,如果是动态web工程就自动build,不需手动操作。
此处我们创建一个动态web工程如下;
编写测试代码如下:
package com.solrj;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrQuery.ORDER;
import org.apache.solr.client.solrj.SolrResponse;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.junit.Test;
/**
* 测试solrj的服务
* 增加
* 删除
* 查询
* 修改
* @author wjk
*
*/
public class testsolrj {
@Test
public void testFind() throws Exception{
//先连接Solr服务器
String solrurl="http://localhost:8080/solr/";
SolrServer solrserver=new HttpSolrServer(solrurl);
//创建查询
SolrQuery solrquery=new SolrQuery();
//设置查询关键词
solrquery.set("q","*:*" );
//设置过滤
solrquery.set("fq", "地区:*浙江*");
//设置起始页
solrquery.setStart(0);
//设置分页
solrquery.setRows(5);
//设置排序依据,升序or降序
solrquery.addSort("id",ORDER.desc);
//执行查询,得到结果
QueryResponse response=solrserver.query(solrquery);
//得到文档结果集
SolrDocumentList docs=response.getResults();
//得到结果总条数
long num=docs.getNumFound();
System.out.println("总条数为:"+num+"条");
for(SolrDocument doc:docs)
{ System.out.print(doc.get("id")+" ");
System.out.println(doc.get("原告"));
System.out.println(doc.get("原告诉称"));
}
}
}
运行程序后,你会发现报错:SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”.
不要紧张,原因是因为工程确立log日志包,我们可以在 solr-4.10.4\example\lib 路径下,将5个日志包全都复制到工程lib文件夹下,如下所示(注意如果jar包重名就选择覆盖掉)
最后,运行程序,可以看到成功在java控制台查询到通过solr服务查询到的信息