环境信息
solr - solr-8.5.1
tomcat-tomcat-8.5.55
IKAnalyzer-ik-analyzer-8.3.0
安装solr
linux服务器搭载Solr,以及在Tomcat中部署Solr,参考:传送门
界面创建 Core Admin 时出现错误:
Can't find resource 'solrconfig.xml' in classpath or '/usr/local/solr/solr-8.5.1/solr-home/new_core'
或者 Can't find resource 'schema.xml' in classpath or '/usr/local/solr/solr-8.5.1/solr-home/new_core
解决方法:先复制,然后重启tomcat
cp /usr/local/solr/solr-8.5.1/server/solr/configsets/_default/conf /usr/local/solr/solr-8.5.1/solr-home/new_core/ -r
集成IK分词器
1.下载分词jar包,github地址;
官方教程:
单机版Solr
-
将jar包放入Solr服务的
Jetty或Tomcat的webapp/WEB-INF/lib/目录下; -
将
resources目录下的5个配置文件放入solr服务的Jetty或Tomcat的webapp/WEB-INF/classes/目录下 (注1);① IKAnalyzer.cfg.xml ② ext.dic ③ stopword.dic ④ ik.conf ⑤ dynamicdic.txt -
配置Solr的
managed-schema,添加ik分词器,示例如下(注2);<!-- ik分词器 --> <fieldType name="text_ik" class="solr.TextField"> <analyzer type="index"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType> -
启动Solr服务测试分词;

-
IKAnalyzer.cfg.xml配置文件说明:名称 类型 描述 默认 use_main_dict boolean 是否使用默认主词典 true ext_dict String 扩展词典文件名称,多个用分号隔开 ext.dic; ext_stopwords String 停用词典文件名称,多个用分号隔开 stopword.dic; -
ik.conf文件说明:files=dynamicdic.txt lastupdate=0files为动态词典列表,可以设置多个词典表,用逗号进行分隔,默认动态词典表为dynamicdic.txt;lastupdate默认值为0,每次对动态词典表修改后请+1,不然不会将词典表中新的词语添加到内存中。lastupdate采用的是int类型,不支持时间戳,如果使用时间戳的朋友可以把源码中的int改成long即可;2018-08-23已将源码中lastUpdate改为long类型,现可以用时间戳了。
-
dynamicdic.txt为动态词典在此文件配置的词语不需重启服务即可加载进内存中。 以
#开头的词语视为注释,将不会加载到内存中。
注1:此版本的jar种这个文件并没有在resource文件夹下,打开即可看到,如图:

注2:managed-schema文件的路径:/usr/local/solr/solr-8.5.1/solr-home/new_core/conf
集成IK分词器
下载pinyin
下载地址:https://pan.baidu.com/s/1FVYwpBQ4UOu1X8kgTqDIhQ
提取码:yn2q
下载后将2个jar文件放置到 /usr/local/solr/apache-tomcat-8.5.55/webapps/solr8/WEB-INF/lib 目录下 ,
然后修改core的配置文件:managed-schema,添加:
<!--拼音分词-->
<fieldType name="text_pinyin" class="solr.TextField" positionIncrementGap="0">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/>
<filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" />
<filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="1" maxGram="20" />
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/>
<filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" />
<filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="1" maxGram="20" />
</analyzer>
</fieldType>
效果如图:
重启tomcat,访问solr,结果如图:

本文详细介绍了如何在Linux环境下安装并配置Solr 8.5.1,以及在Tomcat 8.5.55中部署Solr过程中可能遇到的问题与解决方案。特别聚焦于集成IKAnalyzer 8.3.0分词器,包括配置步骤、所需文件及位置,以及如何测试分词效果。此外,还介绍了如何添加拼音分词功能。
6865

被折叠的 条评论
为什么被折叠?



