solr集成mmseg4j分词

mmseg4j

https://code.google.com/p/mmseg4j/

https://github.com/chenlb/mmseg4j-solr

  1. mmseg4j 用 Chih-Hao Tsai 的 MMSeg 算法(http://technology.chtsai.org/mmseg/ )实现的中文分词器,并实现 lucene 的 analyzer 和 solr 的TokenizerFactory 以方便在Lucene和Solr中使用。
  2. MMSeg 算法有两种分词方法:Simple和Complex,都是基于正向最大匹配。Complex 加了四个规则过虑。官方说:词语的正确识别率达到了 98.41%。mmseg4j 已经实现了这两种分词算法。

mmseg4j-solr2.2.0里面有两个jar包,分别是mmseg4j-core-1.10.0.jar,mmseg4j-solr-2.2.0.jar.将两个jar拷贝到/WEB-INF/lib里面。

配置

1
2
3
4
5
6
7
<fieldType name="text_mmseg" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="dic"/>
</analyzer>
</fieldType>


这时候在定义field是就可以使用text_mmseg的fieldType。

tokenizer参数

mmseg4j 在 solr 中主要支持两个参数:mode、dicPath。mode 表示是什么模式分词(有效值:simplex、complex、max-word,如果输入了无效的默认用 max-word。)。dicPath 是词库目录可以是绝对目录,也可以是相对目录(是相对 solr.home 目录下的,dic 就会在 solr.home/dic 目录下找词库文件),如果不指定就是默认在 CWD/data 目录(程序运行当前目录的data子目录)下找。

这个地方所说的solr.home我理解的时候,总是觉得是tomcat/solr 这个目录。也就是solr核心的根目录,测试了很久,这里所说的solr.home是指定core的目录,默认也就是/tomcat/solr/collection1这个目录。

dicPath支持相对路径和绝对路径,上面配置的dic,所以需要在/tomcat/solr/这个目录创建一个名为dic的目录。然后将词库文件放到这个目录下。并且词库文件名必须以words开头.dic结尾。词库强制使用utf-8.由于 utf-8 文件有带与不带 BOM 之分,建议词库第一行为空行或为无 BOM 格式的 utf-8 文件。

搜狗词库

http://www.sogou.com/labs/dl/r.html

需要转换才能给mmseg4j来使用

作者

张巍

发布于

2014-11-03

更新于

2014-11-03

许可协议

评论