Solr加入中文分词器。
中文分词在solr里面是没有默认开启的,需要我们自己配置一个中文分词器。目前可用的分词器有smartcn,IK,Jeasy,庖丁。其实主要是两种,一种是基于中科院ICTCLAS的隐式马尔代夫HMM算法的中文分词器,如smartcn,ictclas4j,优点是分词准确度高,缺点是不能使用用户自定义词库;另一种是基于最大匹配的分词器,如IK,Jeasy,庖丁,优点是可以自定义词库,增加新词,缺点是分出来的垃圾词较多。各有优缺点看应用场合自己衡量选择吧。
下面给出两种分词器的安装方法,任选其一即可,推荐第一种,因为smartcn就在solr发行包的contrib/analysis-extras/lucene-libs下,就是lucene-analyzers-smartcn-4.7.0.jar,首选在solrconfig.xml中加一句引用analysis-extras的配置,这样我们自己加入的分词器才会引用到solr中。
<lib dir = "../../../contrib/analysis-extras/lib" regex = ".*\.jar" />
smartcn分词器的安装
首先将发行包的contrib/analysis-extras/lucene-libs/lucene-analyzers-4.7.0.jar复制到\solr\contrib\analysis-extras\lib下,在solr本地应用文件夹下,打开/solr/conf/scheme.xml,编辑text字段类型如下,添加以下代码到scheme.xml中的相应位置,就是找到fieldType定义的那一段,在下面多添加这一段就好。
<fieldType name = "text_smartcn" class = "solr.TextField" positionIncrementGap = "0">
<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>
如果需要检索某个字段,还需要再schema.xml下面的field中,添加指定的字段,用text_smartcn作为type的名字,来完成中文分词。如text要实现中心检索的话,就要做如下的配置:
<field name = "text" type = "text_smartcn" indexed = "true" stored = "false" multiValued = "true" />
IK分词器的安装
首先要去下载IKAnalyzer的发行包。
下载后解压出来文件中的三个复数到\solr\contrib\analysis-extras\lib目录中。
- IKAnalyzer2012FF——u1.jar 分词器jar包
- IKAnalyzer.cfg.xml 分词器配置文件
- Stopword.dic 分词器停词字典,可自定义添加内容
复制后就可以像smartcn一样的进行配置schema.xml了。
<fieldType name = "text_ik" class = "solr.TextField" >
<analyzer class = "org.wltea.analyzer.lucene.IKAnalyzer" />
</fieldType>
<field name = "text" type = "text_ik" indexed= "true" stored = "false" multiValued = "true" />
现在来验证下是否添加成功,首先使用StartSolrJetty来启动solr服务。
启动过程中如果配置出错,一般有两个原因:
- 一是配置的分词器jar找不到,也就是你没有复制jar包到\solr\contrib\analysis-extras\lib目录下。
- 二十分词器版本不对导致的分词器接口API不一样出的错,要是这个错的话就在检查分词器的相关文档,看一下支持的版本是否一样。
如果在启动过程中没有报错的话说明配置成功了,我们可以进入到http://localhost:8080/solr地址进行测试一下刚加入的中文分词器,在首页的Core Selector中选择你配置的Core后点击下面的Analysis,在Analyse Fieldname / FieldType里选择你刚才设置的字段名称或是分词器类型,在Field Value(index)中输入:中国人,点击右面的分词就行了。