中文分词

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错误提示

posted @ 2016-08-05 14:11  saratearing  阅读(1320)  评论(0编辑  收藏  举报