原文出处:http://blog.chenlb.com/2009/10/chinese-segment-mmseg4j-1_8-release.html
想发布新版的 mmseg4j 到现在已经有二个多月了。主要是因为这段时间忙其它事情了。现 Lucene 2.9 发布了,solr 1.4 也应该会比较快就要发布了。对 mmseg4j 兼容新版的 lucene/solr 也是个任务。
现 mmseg4j 发布新版 1.8,可以下载:mmseg4j-1.8.zip 包括了源码与词库,还有创建文件。下面说下此版的主要变更:
new:
1、有检测词典变更的接口,外部程序可以使用 wordsFileIsChange() 和 reload() 来完成检测与加载的工作. (内部不实现自动检测与加载,留给外部程序去做。)
2、添加 MMseg4jHandler 类,可以在solr中用url的方式来控制加载检测词库。
3、增加 CutLetterDigitFilter过虑器,切分“字母和数”混在一起的过虑器。比如:mb991ch 切为 "mb 991 ch"。
changes:
1、默认在 classpath 中加载 data 目录(词库目录),找不到再找 user.dir/data 目录。但是优先 mmseg.dic.path 系统属性指定的。
2、新词库,去除 sogou 高频无词性的词,合并 rmmseg 提供的词(是 mmseg4j 1.0 使用的词库),共计(14W 多词)。
3、数字或英文开头的数字或英文不独立分出。如 MB991CH/A 分为 mb991ch a,cq40-519tx 分为 CQ40 519TX
4、内置支持小写,不需要 LowerCaseFilter 了。MMSegAnalyzer 去除了小写过虑。
5、支持 solr 1.3/1.4、lucene 2.3/2.4/2.9
6、尝试加载 jar 里的 words.dic,并构建含有 words.dic 的 jar(mmseg4j-*-with-dic.jar)。
bugs:
1、Dictionary 添加 finalize 方法。修正 tomcat reload 时 OOM 的 bug: http://code.google.com/p/mmseg4j/issues/detail?id=4
2、MMSegTokenizer 在 lucene 2.4 编译的 在 lucene 2.9 中会报 java.lang.NoSuchFieldError: input。bug: http://code.google.com/p/mmseg4j/issues/detail?id=5
此发布版的 *.jar 是在 solr-1.3,lucene-2.4 下编译,可以支持 solr-1.4-dev,lucene-2.3/2.9。如果你心理上觉得在 solr-1.4/lucene-2.9 下运行不爽。可以把下载来的 mmseg4j-1.8.zip 里的 lib/*.jar 换成 solr1.4/lucene2.9的jar(apache-solr-core-1.4-dev.jar,apache-solr-solrj- 1.4-dev.jar,lucene-core-2.9.jar),然后用 ant 重新编译打包。方式是:
ant build
为不需要自定义词库的网友可以使用 mmseg4j-*-with-dic.jar 的包,它们包括了 *.dic 文件。当然此情况下还是可以使用扩展自己的词库,把自己的词库放到指定的目录就行(原来指定词库的方式,加上默认的 classpath/data)。事实上只是在自定义的词库目录加载之前尝试加载 jar 里的 words.dic文件。solr 用户还是推荐用原来的方式。
欢迎大家使用,或报告 bug。
1.8.2 fixed bug: