百度上对Solr的介绍:
Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
Solr安装
我将在Windows下,完成对Solr的安装,假设您已经下载了Solr并且解压完成。
1.将solr部署到tomcat中。将/example/webapps下的solr.war解压到tomcat中webapps目录下。
2.复制jar包。将/example/lib/ext下面所有的jar加入到tomcat中webapps\solr\WEB-INF\lib下。
3.复制exampl/solr文件夹到其他目录,并且修改webapps\solr\WEB-INF\中的web.xml文件。为了方便我直接将其复制到C盘根目录下
修改web.xml文件。
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>C:solr</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
4.此时solr已经安装好了,开启你的tomcat,在浏览器中输入localhost:8080/solr即可。
Solr使用
1.如果要实现中文搜索,我们必须加入额外的中文分词器,这里我使用了IK Analyzer。打开解压文件,
将.jar包添加到tomcat\webapps\solr\WEB-INF\lib中。
并且将IKAnalyzer.cfg.xml和stopword.dic加入solr\WEB-INF\classes中。
2.配置Schema.xml,将上面配置的中文分词器加入solr中的,找到fieldType,加入IKAnalyzer。
Schema.xml文件位置:
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
<analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
接着加入索引字段item_title。
<field name="item_title" type="text_ik" indexed="true" stored="true"/>
3.在Java中我们可以借助SolrJ来使用Solr。
- 插入数据到Solr
@Test
public void testSolrJ() throws SolrServerException, IOException{
//创建一个到solr的连接
SolrServer server = new HttpSolrServer("http://localhost:8080/solr");
//创建一个文档对象,可以理解为数据库的一条记录
SolrInputDocument document = new SolrInputDocument();
//添加域,可以理解为为记录中各个字段设置值
document.addField("id", "测试一下");
document.addField("item_title", "测试field");
//提交到索引库
server.add(document);
server.commit();
}
此时打开我们的Solr,执行搜索id:测试一下,看到记录确实插入了Solr中。
- 查询数据:
@Test
public void testQuery() throws SolrServerException{
SolrServer server = new HttpSolrServer("http://localhost:8080/solr");
//创建一个搜索对象
SolrQuery query = new SolrQuery();
query.setQuery("id:测试一下");
//执行搜索
QueryResponse result = server.query(query);
for (SolrDocument solrDocument : result.getResults()) {
System.out.println("id:"+solrDocument.get("id"));
System.out.println("item_title:"+solrDocument.get("item_title"));
}
}
结果如下,说明我们成功查询倒了数据。
总结
以上内容只适合第一次接触Solr的同学,讲的比较简单,只是为了介绍如何使用Solr。还有很多内容,如schema.xml文件中各个节点的具体含义,SolrQuery的其他属性如何设置,如何将Solr与Spring和ORM框架整合等等会在之后带来介绍。