window环境下solr6.3配置ik分词

  • 介绍

window环境下solr6.3配置ik分词

window环境下solr6.3配置ik分词

一、环境
1、solr6.3.0
2、JDK1.8
3、apache-tomcat-8.0.41

二、过程
1、solr6.3.0正常启动;
2、ik分词配置

2.1、所需jar

ik-analyzer-solr6.3.jar

解压上一个步骤所得到的压缩包,将ik-analyzer-solr6.3.jar

这个jar包放入solr项目下的WEB-INF\lib目录中去,将IKAnalyzer.cfg.xml, stopword.dic放在solr项目下的WEB-INF\classes目录中去(没有就创建classes文件夹)。

2.2、修改managed-schema文件

修改/solr_home/collection1/conf/中的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>

具体字段引用如下:(例如姓名需要使用分词器那么,将name字段的设置修改以下,如以下修改)

修改filed 使filed引用text_ik.这样才能使用IK分词器。

<field name=”name” type=”text_ik” indexed=”true” stored=”true”/>

2.3、:在solr应用中测试,示例如下图:

2.4、修改solrconfig.xml文件

修改E:\solr\solr_home\collection1\conf\solrconfig.xml文件配置生成的索引文件路径,示例如下:

<dataDir>${solr.data.dir:E:/solr/solr_home/data}</dataDir>

2.5、solr+IK实现同义词设置

2.5.1、在solr_home\core1\conf\synonyms.txt文件中添加同义词。

=>指一对一,以逗号分隔的是组群,也就是多对多。

备注:做ik同义词分词时,打开.txt文件添加同义词后;

需要用ue另存为 无BOM 的 UTF-8 编码,否则启动tomcat报错java.nio.charset.MalformedInputException: Input length = 1。

2.5.2、在solr_home\core1\conf\managed-schema文件中配置同义词。

备注:,如果需要使用以逗号分隔的组群,建立多对多的关系,需要将上面的expand=”true”设置为true。

2.6、solr+ik实现自定义分词

2.6.1F:\kingdom\apache-tomcat-8.0.41\webapps\solr\WEB-INF\classes目录下的IKAnalyzer.cfg.xml配置文件,添加如下配置 ext.dic;

 

2.6.2新建ext.dic文件,在里面添加如下内容(注意:ext.dic的编码必须是Encode in UTF-8 without BOM,否则自定义的词库不会被识别)

2.6.3重启solr,在控制台core admin里reload一下,测试验证。

2.7、停止词设置

停止词:lucene的停止词是无功能意义的词,比如is 、a 、are 、”的”,“得”,“我” 等,这些词会在句子中多次出现却无意义,所以在分词的时候需要把这些词过滤掉。

扩展词库:就是不想让哪些词被分开,让他们分成一个词。

同义词:假设有一个电子商务系统,销售书籍,提供了一个搜索引擎,一天,市场部的人要求客户在搜索书籍时,同义词就是比如输入“电子”,除了展示电子相关的书籍,还需要展现“机器”相关的书籍。

以IK分词器为例子说明怎么配置。

2.7.1:配置停止词和扩展词库。

将IKAnalyzer解压文件夹下的stopword.dic和IKAnalyzer.cfg.xml复制到tomcat/webapps/solr/WEB-INF/classes下,再新建一个ext.dic,里面的格式和stopword.dic一致。

并修改IKAnalyzer.cfg.xml如下面的格式可以配置多个停止词或者扩展词库文件。

<properties>

<comment>IK Analyzer 扩展配置</comment>

<!–用户可以在这里配置自己的扩展字典–>

 

<entry key=”ext_dict”>ext.dic;</entry>

 

<!–用户可以在这里配置自己的扩展停止词字典–>

 

<entry key=”ext_stopwords”>english_stopword.dic;stopword.dic</entry>

这样就完成了。我在扩展词库ext.dic里面加上了 呼吸式酒精测试 测试扩展词库成功

2.7.2、同义词配置。

为了让例子简单,我们假设索引库只有两个字段。

1.在solr数据文件conf目录下schema.xml 中加入以下两个字段:

<field name=”id” type=”string” indexed=”true” stored=”true” required=”true” />

<field name=”description” type=”text_syn” indexed=”true” stored=”true” />

2在 schema.xml 中增加 text_syn 类型的定义:

<fieldType name=”text_syn” class=”solr.TextField”>

<analyzer type=”query”>

<tokenizer class=”solr.WhitespaceTokenizerFactory”/>

<filter class=”solr.LowerCaseFilterFactory”/>

</analyzer>

<analyzer type=”index”>

<tokenizer class=”solr.WhitespaceTokenizerFactory”/>

<filter class=”solr.SynonymFilterFactory” synonyms=”synonyms.txt” ignoreCase=”true” expand=”false” />

<filter class=”solr.LowerCaseFilterFactory”/>

</analyzer>

3.在相同的conf目录下的 synonyms.txt 中增加

machine => electronics

配置完成

 

 

  • 参考

本文为原创,如果您当前访问的域名不是surenpi.com,请访问“素人派”。

发表评论

电子邮件地址不会被公开。 必填项已用*标注