这款发布的淑珍分词器版本是1.1.9,完全是基于字典分词,在提供下载的压缩包中含有编译好的jar包和所有的源代码,可以应用于Lucene3.0版本及以上中。
为了方便根据自己需要对分词器进行修改,我这里介绍一下淑珍分词器的核心数据结构,这个数据结构也是当初我在写分词器的时候,为了解决词库条目多和索引速度之间的相互制约而想出来的。
这个数据结构就是将词库中的每一个条目以一种特定的结构存储在JDBM或内存中,比如,对一个很常见的条目例子:“男女搭配干活不累”来举例子,在这种数据结构中,将被存储为如下key-value键值对:
男->女
男女->搭
男女搭->配
男女搭配->干
男女搭配干->活
男女搭配干活->不
男女搭配干活不->累
男女搭配干活不累->$
那么这种数据存储结构有什么好处呢?当我们在对字符进行分词的时候,我们要根据词库条目来进行判断我们要分的字符串是否是词库中的一个条目,这个时候就涉及到对词库中条目进行查找的问题,当采用这种数据结构的时候,我们在查找对比的时候就有很高的速度,这也是为什么淑珍分词器在分词时的速度与词库中条目数量无关的主要原因。
这个数据结构也是淑珍分词器的核心所在。
这个核心处理是由KeysGroup.java这个类来完成的。
顺便说点题外话,有的朋友一说起数据结构,可能就会把思维局限在了数据结构书籍里或现有的一些数据结构里,但淑珍分词器所采用的这个数据结构却完全是我自己独立想出来的,当然了我不知道是否还有其他人早已想出了这个数据结构,我这里说这个的目的不是说我自己想出这个结构有多么的牛—完全不是这样的,我只是想说的是那些书籍里所讲述的数据结构也都是人想出来的,既然你也是人,那你为什么就不能试着去想出新的结构出来?
我觉得中国学生都不笨,但做事并不仅仅是靠聪明这一项因素的,在编程这一领域,我个人觉得还应当要有一种敢于突破的精神和思想。
以上也只是感慨之言吧。
目前这款分词器已经应用在了一个搜索引擎网站中,虽然这个版本没有在这个网站中使用的高,但其核心的东西却都是一样的,所以如果想要了解这个1.1.9版本的速度及性能如何,可以访问这个搜索引擎网站进行了解:www.zihou.com
请理解我现在还不能将淑珍分词器最新版本开源出来,我想能力高的朋友还是挺多,这个1.1.9版本其实也就是提供了一个基础,在此基础上,我相信,肯定会有能力强的朋友做出更好的分词效果出来。
这款分词器的开源我在年初就有了这个想法,不过事情一直很多,实在没心情弄这个,最近几天才稍微空闲了一些,才抽出了点时间将其发布了出来,也请高手们多指点。
下载地址:http://www.zihou.com/download/ShuzhenAnalyzer-1.1.9.rar