简介
Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
工作方式
文档通过Http利用XML 加到一个搜索集合中。查询该集合也是通过http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。
快速安装
1、上传解压包到linux服务器
2、把/root/solr-4.10.3/dist/solr-4.10.3.war解压到tomcat的webapps下
3、新建solrhome目录
4、修改webapps下solr/solr.xml文件 指定solrhome的目录 solr-4.10.3.war
5、在部署目录tomcat/webapps/solr/WEB-INF/ 新建classes目录
6、将IK目录下的两个dic文件和一个cfg.xml文件复制到classes目录 完成中文分词
7、solrhome/collection1/conf/schma.xml 中添加业务域
例如:
<field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="name" type="text_ik" indexed="true" stored="true" required="true" multiValued="false" />
<field name="title" type="text_ik" indexed="true" stored="true" required="true" multiValued="false" />
<field name="category" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="content" type="text_ik" indexed="true" stored="true" required="true" multiValued="false" />
<field name="price" type="double" indexed="true" stored="true" required="true" multiValued="false" />
<field name="color" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="orderBy" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="updatetime" type="date" indexed="true" stored="true" required="true" multiValued="false" />
<!-- IK分词 -->
<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>
完成后启动Tomcat 访问ip:端口/solr 即可访问solr-admin进行管理
查看中文分词效果
使用索引查询效果
Java使用SolrJ连接Solr
先导入SolrJ的jar包 可到maven中央仓库下载
示例java代码
单机版连接
// Solr添加
@Test
public void testAdd() throws SolrServerException, IOException {
// 创建HttpSolrServer对象
SolrServer server = new HttpSolrServer("http://192.168.25.133:8080/solr/collection1");
// 创建文档对象
SolrInputDocument document = new SolrInputDocument();
// 必须要有id 并且字段名称必须在schma.xml中定义
document.addField("id", "123");
document.addField("item_title", "zm");
document.addField("item_image", "345");
// 把文档对象写入索引库
server.add(document);
// 提交
server.commit();
}
Spring整合版的SpringData Solr文档:
https://docs.spring.io/spring-data/solr/docs/4.0.4.RELEASE/reference/html/