solr(二) : 整合ik-analyzer

时间:2023-03-09 14:31:10
solr(二) : 整合ik-analyzer

一. 问题:

solr(二) : 整合ik-analyzer

在使用solr时, 分词器解析中文的时候, 是一个一个字解析的. 这并不是我们想要的结果.

而在lucene中, 使用的中文分词器是 IKAnalyzer. 那么在solr里面, 是不是任然可以用这个呢.

二. 整合 ik

1. 修改schema配置文件

打开如下路径中的managed-schema.xml文件.

solr(二) : 整合ik-analyzer

在文档的最后面, 加入

 <!--新建 使用 ik 分词器 解析 的域类型, 分词,过滤都在类里面了-->
<fieldType name="text_ik_type" class="solr.TextField">
<analyzer type="index" useSmart="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
<analyzer type="query" useSmart="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType> <!-- <fieldType name="text_ik_type" class="solr.TextField">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
</analyzer>
</fieldType> -->
<!--支持ik分词器的域-->
<field name="title_ik" type="text_ik_type" indexed="true" stored="true" />
<field name="content_ik" type="text_ik_type" indexed="true" stored="true" multiValued="true"/>
<field name="text_ik" type="text_ik_type" multiValued="true" indexed="true" stored="true"/>

2. 加入jar包

在tomcat solr lib中加入ik分词器的jar包

solr(二) : 整合ik-analyzer

solr(二) : 整合ik-analyzer

jar包可以在这里下载: http://download.****.net/download/z____l/10176803

3. 加入分词器配置文件

将前面lucene 里面出现过的 配置文件拷贝到 classes 文件夹下. 不拷贝也行, 自己新建也可以.

solr(二) : 整合ik-analyzer

由于这里我并没有使用文件夹装ext,stopword, 所以 IKAnalyzer.cfg.xml文件要做部分修改.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">ext.dic</entry> <!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">stopword.dic</entry> </properties>

三. 结果

solr(二) : 整合ik-analyzer