一、编写目的
于2018/04/18尝试部署Solr服务器,期间反复揣摩和尝试,最后形成一套解决思路和理解,特此将其记录下来,以方便后来进行翻阅、查看和配置。
1.1. Solr简介
首先先了解solr是什么:
Solr是一个高性能,采用Java5开发,
Solr基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功 能管理界面,是一款非常优秀的全文搜索引擎。
全文检索的方法主要分为按字检索和按词检索两种。
按字检索是指对于文章中的每一个字都建立索引,检索时将词分解为字的组合。对于各种不同的语言而言,字有不同的含义,比如英文中字与词实际上是合一的,而中文中字与词有很大分别。
按词检索指对文章中的词,即语义单位建立索引,检索时按词检索,并且可以处理同义项等。英文等西方文字由于按照空白切分词,因此实现上与按字处理类似,添加同义处理也很容易。中文等东方文字则需要切分字词,以达到按词索引的目的,关于这方面的问题,是当前全文检索技术尤其是中文全文检索技术中的难点。
二、部署步骤
2.1. 解压 Solr7.2.0、Tomcat8压缩包
2.2. 复制/修改Solr文件
2.2.1. [Solr]/server/solr-webapp/webapp到[Tomcat]/webapps下
2.2.2. 修改该文件夹名称为[Solr]
注:solr4.10.3的版本当中都是直接复制solr.war到webapps下并进行自己手动解压或者运行tomcat解压
2.3. 复制jar
2.3.1. 复制[Solr]/lib下如下jar
2.3.2. 粘贴于[Tomcat]/webapps/solr/WEB-INF/lib下
2.4. 创建classes文件夹/复制log4j.properties文件
2.4.1. [Tomcat]/webapps/solr/WEB-INF
2.4.2. 复制[Solr]/server/resources/log4j.properties到[Tomcat]/webapps/solr/WEB-INF/classes下
2.5. 启动/创建Core
在这里 ,可以将Core理解为一个索引库 什么是Core?
2.5.1. 命令行进入[Solr]/bin,执行 ./solr start , 启动Solr
启动后默认端口为8993,传送门 http://localhost:8983/solr/index.html
2.5.2. 创建Core存在两种方式:
a. 命令行创建
.\solr create -c [name]
例如:.\solr create -c test_core
创建成功后提示如图:
技巧:WIN10特性,在[Solr]/bin文件夹下按住 shift键+右键 打开powerShell窗口
注:先启动Solr后执行,否则创建不成功,则会提示如图
b. Solr 平台创建
传送门 http://localhost:8983/solr/index.html#/~cores
以上两种方式都会在[Solr]/server/solr生成文件夹,文件名与输入的name是一样的,如图
2.6. 创建新文件夹/复制SolrCore/填写Core访问路径
2.6.1. 在[Tomcat]目录下定义一个新文件夹,用于存放Core及配置生成的索引库。
例:[Tomcat]/solr_home
2.6.2. 将此前通过创建的Core(2.5)以及同级目录文件都复制粘贴于创建的文件夹(2.6.1)中
如图:
2.6.1. 修改 [Tomcat]/webapps/solr/WEB-INF/web.xml 内容
可将注释打开/修改内容或者直接复制如下内容:
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>../../solr_home</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
此致,Solr配置完毕,启动Tomcat
注:如果发现仍然发现进入不了Solr,报403错误,尝试注释掉如下内容
2.7. 配置IK分词库
2.7.1. 解压ikanalyzer-solr6.5.zip
2.7.2. ik-analyzer-solr5-5.x.jar 复制到[tomcat]/webapss/solr/WEB-INF/lib
IKAnalyzer.cfg.xml 复制到[tomcat]/webapss/solr/WEB-INF/classes
2.7.3. 进入[Tomcat]/solr_home/[core]/conf
修改managed-schema文件,头部添加以下内容
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" isMaxWordLength="false" useSmart="false" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"
isMaxWordLength="false" useSmart="false" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"
ignoreCase="true" expand="true" />
<filter class="solr.LowerCaseFilterFactory" />
<charFilter class="solr.HTMLStripCharFilterFactory" />
</analyzer>
</fieldType>
至此,IK分词库配置完成。可通过如下操作找到该配置分词库
2.8. 从关系型数据库建立索引
2.8.1. 导入jar
2.8.1.1. 进入[Solr]/dist/目录复制jar。
solr-dataimporthandler-extras-7.2.0.jar
solr-dataimporthandler-7.2.0.jar
2.8.2. 修改配置
2.8.2.1. 进入[Tomcat]/solr_home/conf目录
solrconfig.xml添加以下内容
<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
如图:
注意:如果不配置在选择DataImport时,会提示Sorry, no dataimport-handler defined!
2.8.3. 建立data-config.xml文件
链接:https://pan.baidu.com/s/1soCI-J3ZWpBgThMoW1t33g 提取码:dg3n
2.8.4. 引入数据库驱动
演示中使用的是oralce数据,则直接导入驱动到[Tomcat]/webapps/solr/WEB-INF/lib即可
2.8.5. 增加属性描述
在managed-schema中添加以下内容:
<field name="ID" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="uuid" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="title" type="text_ik" indexed="true" stored="true" required="true" multiValued="false" />
<field name="modules" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="modulesName" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="type" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="text" type="text_ik" indexed="true" stored="true" required="true" multiValued="false" />
<field name="url" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="updateTime" type="date" indexed="true" stored="true" required="true" multiValued="false" />
三、下载传送门
链接:https://pan.baidu.com/s/1soCI-J3ZWpBgThMoW1t33g 提取码:dg3n
四、参考资料
solr7.2环境搭建和配置ik中文分词器_ik solr7.5.0-CSDN博客 solr7.2环境搭建和配置ik中文分词器