如何使用solr对文件建立索引

来源:互联网 发布:中国未来人口知乎 编辑:程序博客网 时间:2024/06/05 05:11

使用Solrj操作Solr

从上面的步骤中可以看出Solr提供了一个企业搜索引擎平台的核心,可以通过他的接口进行索引的创建、修改、删除。并提交关键字进行搜索。但如果要真正的投入使用,还是有不和工作需要做,如:

1、对向Solr提交索引进行一定的封装以方便业务系统进行操作

2、对搜索进行封装,以方便结果的展现分析等等。

Solrj是使用java编写的一个操作Solr的工具,方便于进行索引的更新、搜索结果的获取等等。

在Solr的发布包里面有Solrj的相关jar包。Solrj需要的jar包为:

apache-solr-solrj-4.0.0.jar和他的依赖包solr/dist/solrj-lib

如果是使用maven,可以添加:

<dependency> 
 <groupId>org.apache.solr</groupId> 
 <artifactId>solr-solrj</artifactId> 
 <version>4.0.0</version> 
</dependency>

使用Solrj更新索引

使用Solrj是首先我们实例化一个SolrServer,这里使用HttpSolrServer。我们再创建一个SolrInputDocument以方便来添加要索引的数据。这里的Field是在\solr\solr\collection1\conf\schema.xml里面定义的,如果里面没有定义的字段在这里是不能添加的,除非是使用动态字段。示例代码如下:

String url = "http://localhost:8080/solr"; 
SolrServer server = new HttpSolrServer(url); 
SolrInputDocument doc1 = new SolrInputDocument(); 
doc1.addField("id", "1"); 
doc1.addField("title", "云南xxx科技");
doc1.addField("cat", "企业信息门户,元数据,数字沙盘,知识管理"); 
SolrInputDocument doc2 = new SolrInputDocument(); 
doc2.addField("id", "2"); 
doc2.addField("title", "胡启稳"); 
doc2.addField("cat", "知识管理,企业信息门户,云南,昆明"); 
SolrInputDocument doc3 = new SolrInputDocument(); 
doc3.addField("id", "3"); 
doc3.addField("title", "liferay");
doc3.addField("test_s", "这个内容能添加进去么?这是动态字段呀"); 
List docs = new ArrayList(); 
docs.add(doc1);
docs.add(doc2); 
docs.add(doc3); 
server.add(docs); 
server.commit();

到此就添加了三个document到solr的索引库里面。下面介绍如何进行搜索。

使用Solrj进行搜索

搜索的第一步和上面一样,先取得一个SolrServer。然后创建一个SolrQuery进行搜索,搜索取得的数据已经封装在QueryResponse里面,通过相关API获取结果数据。示例代码如下:

String url = "http://localhost:8080/solr"; 
SolrServer server = new HttpSolrServer(url); 
SolrQuery query = new SolrQuery("云南"); 
try { 
 QueryResponse response = server.query(query); 
SolrDocumentList docs = response.getResults(); 
System.out.println("文档个数:" + docs.getNumFound()); 
 System.out.println("查询时间:" + response.getQTime()); 
for (SolrDocument doc : docs) { 
 System.out.println("id: " + doc.getFieldValue("id")); 
 System.out.println("name: " + doc.getFieldValue("title")); 
 System.out.println(); 
 }
0 0
原创粉丝点击