1、 名词说明
中文分词要处理的数据为文本数据:solr.TextField,需在schema.xml文件中做相关配置,配置选项如下:
- analyzer:告诉solr在建立索引和搜索的时候,如何处理text类型的内容。它在schema.xml文件中配置,可以直接指定一个类给它,也可以由tokenizer和filter的组合来实现。
- type:可选参数,index或者query,标明此配置是建立索引还是查询。若没有此参数,表示两种都适用。
- tokenizer:分词器,接收text(通过重solr那里获取一个reader来读取文本),拆分成token stream
- filter过滤器,接收token stream,对每个token进行处理(比如:替换、丢弃),输出token stream。因此在配置文档中,Tokenizer放在第一位,Filter放在第二位直至最后一位。
2、分词工作流程简述
analyzer负责把文本field转化为token流,然后自己处理,或者调用tokenzier和filter进一步处理。Tokenzier和filter是同等级和顺序执行的关系,一个处理完后交给下一个处理。对于filter而言,一般通用的处理放在前面,特殊的处理靠后。
3、Smartcn分词器配置
在managed-schema文档中已经定义了一些分词规则。中文分词在solr中是没有默认开启的,需要另外配置一个中文分词。目前可用的分词器有smartcn,IK,Jeasy,庖丁。
Solr官方提供了简体中文分词Smartcn,以此为例,步骤如下:
1、 将solr-6.1.0\contrib\analysis-extras\lucene-libs\lucene-analyzers-smartcn-6.1.0.jar拷贝到Tomcat安装目录 \webapps\solr\WEB-INF\lib\目录下。
2、 配置managed-schema文档
配置如下:
<fieldType name="text_smartcn" class="solr.TextField" positionIncrementGap="0"> <analyzer type="index"> <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/> <!--filter内容可以根据需求配置--> <filter class="solr.PorterStemFilterFactory" /> </analyzer> <analyzer type="query"> <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/> <filter class="solr.PorterStemFilterFactory" /> </analyzer> </fieldType> <!--6.1版本不支持SmartChineseSentenceTokenizerFactory类,以前版本可能支持,须看具体情况 <fieldType name="text_smartcn" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/> <filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory" /> </analyzer> <analyzer type="query"> <tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/> <filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory" /> </analyzer> </fieldType> -->
重启服务,效果如下。
4、IK分词器配置
1、IK Analyzer版本:IKAnalyzer 2012FF_hf1
下载地址:https://code.google.com/p/ik-analyzer/downloads/list,
解压IK Analyzer 2012FF_hf1.zip,将解压后文件夹中的IKAnalyzer2012FF_u1.jar拷贝到Tomcat安装目录 \webapps\solr\WEB-INF\lib\目录 下。
2、配置managed-schema文档
配置如下:
<fieldType name="text_ik" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer" /> </fieldType>
重启服务,配置成功。
说明:
不能将positionIncrementGap="100"放入到<fieldType>字段类型中去,因为IKAnalyzer不支持positionIncrementGap的属性注入;若添加则启动tomcat时会出现org.apache.solr.common.SolrException: Plugin Initializing failurefor [schema.xml] fieldType错误提示
来源:https://www.cnblogs.com/saratearing/p/5741133.html