IKAnalyzer 中文分词支持Solr 6以上 solrj 6
目录
IKAnalyzer 根据最新源码改造,以适配6.0以上solr ,支持IKAnalyzer和IKTokenizerFactory两种方式做分词:
- 支持IKAnalyzer
- 支持IKTokenizerFactory
源码工程
工程代码放在Github上,本文只讲述具体使用方法。 —— [ IKAnalyzer工程源码 ]
使用步骤说明
配置文件处理
-
将src/main/resources下配置文件放到solr工程WEBINF/classes下
- IKAnalyzer.cfg.xml 主要是IK分词的配置文件,用于定义扩展字典和截止字典
- ext.dic 扩展字典
- stopword.dic 截止字典
- 将pom.xml里面的src/main/resources的过滤注释掉就可以直接放在jar包中使用,不需要额外放配置文件
配置文件说明
-
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>
引入使用
-
maven打包生成jar
- 放入lib下 修改schema.xml,增加以下配置即可以使用分词搜索
- 参考如下代码片段
<field name="content_factpry" type="textComplex" indexed="true" stored="true"/>
<fieldType name="textComplex" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.factory.IKTokenizerFactory" useSmart="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.factory.IKTokenizerFactory" useSmart="false"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<field name="content_IKAnalyzer" type="textMaxWord" indexed="true" stored="true"/>
<fieldType name="textMaxWord" class="solr.TextField" >
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
运行使用
-
重启服务
- 根据自己定义的field 的名字使用对应的字段即可