版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/gs_albb/article/details/83004701
solr全文搜索引擎中,对于中文的搜索一般都使用了ik分词器。但是一些专有名词,我们希望它能够作为独立的词条,这叫做扩展词;一些助词,谓词我们不希望它被作为词条,这叫停词。应该如何去做呢?
扩展词与停词
在managed-schema中定义text_ik字段类型
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" useSmart="false" >
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/>
<filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
</analyzer>
<analyzer type="query" useSmart="true" >
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/>
<filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
</analyzer>
</fieldType>
在${solr_home}\server\solr-webapp\webapp\WEB-INF\classes
目录下有以下几个文件。
- IKAnalyzer.cfg.xml
- ext.dic
- stopword.dic
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>
示例
ext.dic扩展词文件中加入“佳都科技”词条之前,
ik分词器将“佳都科技”分词为 “佳”,“都”,“科技”三个词条,
加入之后,
ik分词器将“佳都科技”分词为 “佳都科技”,“科技”两个词条,
stopword.dic停词文件中加入“善良而且坚强”词条之前,
ik分词器将“善良而且坚强”分词为 “善良”,“而且”,“坚强”三个词条,
加入之后,
ik分词器将“善良而且坚强”分词为 “善良”,“坚强”两个个词条,