一.Solr简介
Solr它是一种开放源码的、基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中。Solr底层是Lucene,并扩展了Lucene,增加了许多有用便利的功能。Solr 提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON等格式)。它易于安装和配置,而且附带了一个基于HTTP 的管理界面。可以使用 Solr 的表现优异的基本搜索功能,也可以对它进行扩展从而满足企业的需要。Solr的特性包括:
- 高级的全文搜索功能
- 专为高通量的网络流量进行的优化
- 基于开放接口(XML和HTTP)的标准
- 综合的HTML管理界面
- 可伸缩性-能够有效地复制到另外一个Solr搜索服务器使用XML配置达到灵活性和适配性可扩展的插件体系
二.搭建Solr服务器
Solr 必须运行在Java1.6 或更高版本的Java 虚拟机中,所以,安装Solr服务器之前先检查jdk版本是否符合要求。
官网下载地址:http://lucene.apache.org/solr/
Solr 有三个独立的软件包:
- solr-7.4.0.tgz:适用于 Linux / Unix / OSX 系统
- solr-7.4.0.zip:适用于 Windows 系统
- solr-7.4.0-src.tgz:Solr 源代码包。如果您想在 Solr 上开发而不使用官方的 Git 存储库,这将非常有用。
下载相应的Solr压缩包,解压到安装目录。本次使用的7.2.0版本。
1.在命令行界面启动Solr
Solr内置有一个服务器,可以通过命令行进行启动。
首先需要进入到Solr的bin目录下
Windows系统输入:solr.cmd start
Linux/MacOS系统输入:solr start
这将在后台启动 Solr,监听端口 8983。
当您在后台启动 Solr 时,脚本将等待确认 Solr 在正确启动后再返回到命令行提示符。
在浏览上打开: http://localhost:8983/solr/,看到如下界面就说明启动成功。
2.在tomcat服务器上部署Solr
(1)此次部署是在Windows环境下,Solr版本7.2.0
(2)将solr-7.2.0\server\solr-webapp\目录下的webapp目录拷贝到tomcat的webapps下,并重命名为solr
(3)在\solr\WEB-INF下新建文件夹classes并将\solr-7.2.0\example\resources下的log4j.properties文件拷贝到此文件夹,这是solr日志打印,非必要
(4)将\solr-7.2.0\server\lib和\solr-7.2.0\server\lib\ext文件夹下的所有jar包添加到tomcat下\solr\WEB-INF\lib文件夹下
(5)在tomcat根目录新建文件夹solr_home并将\solr-7.2.0\server\solr下的文件全部拷贝到solr_home下,此文件夹下内容为solr的一个实例。
(6)修改solr服务器目录中solr\WEB-INF\web.xml文件指定solr_home所在位置 ,定位到<env-entry>,修改<env-entry-value>值为solr_home的地址
(7)启动tomcat,solr会借助jetty自动启动solr服务实例,最后访问solr服务地址即可看到solr主页: http://localhost:8080/solr/index.html
3.配置solr core
配置前先停止tomcat服务。
(1)在solr_home目录下新建solr_core目录(名字根据实际而定)
(2)将solr_home\configsets\sample_techproducts_configs目录下的conf目录复制到solr_core下
(3)启动tomcat服务,进入solr管理页面
(4)添加core,如图,然后点Add Core
(5)如图表示成功
4.配置中文分词器smartcn
(1)将solr发行包的solr-7.2.0\contrib\analysis-extras\lucene-libs\lucene-analyzers-smartcn-7.2.0.jar复制到tomcat\webapps\solr\WEB-INF\lib目录下
(2)修改solr_home\solr_core\managed-schema中配置,使用我们加入的中文分词
在managed-schema(创建的core的conf文件夹下)搜索<fieldType name="text_general"
,在type=index和type=query的<analyzer>下,都要替换
<!--原有的分词方式-->
<!--<tokenizer class="solr.StandardTokenizerFactory"/>-->
<!--使用smartcn-->
<tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>