距上一版本推出的时间都已一月有余了,现在终于能推出一个让我感到踏实的版本了!说是踏实,是因为此版本目前已被应用在了一个每天有近百万次访问量的比较大型的系统中,每天提供过百万次的搜索结果,经过一段时间的运行,可说是做到了运行稳定,搜索快速,而前几个版本都未有过这种正式环境的运行。
这个版本与上一个版本1.1.2相比,主要是在搜索质量方面得到了比较大的提高,另外在分词准确性方面也得到了一点提高,其他的比如速度等方面没有什么变化。
一、改善的地方主要在:
1、对搜索词提供了两种不同的处理
这个主要是提高搜索质量,比如我们在google中搜索:计算机杂志,如果我们不做处理,那么只能搜索到包含 计算机杂志 这一词的结果,但实际上呢,我们可能也是想搜索关于计算机方面的杂志,比如计算机安全杂志等等,所以这个时候要对这句进行处理,而处理的依据目前是依照字典中的条目来进行,比如字典系统中有条目:计算机 杂志,那么我们就这句处理为:计算机 杂志,这样可以相应的进行与、或的搜索,就能搜索到既包含计算机又包含杂志的记录,google提供的搜索结果就是这样做的。
此版本的第一种处理方式为:
String key = "计算机杂志";
key = KeysGroup.segmentKeyExact(key);
另外,有时在某些情况下,我们可能也需要将一些不是条目的单字也切分出来,比如,我爱看计算机杂志,处理为 我 爱 看 计算机 杂志,这样对应的第二种处理方式为:
key = KeysGroup.segmentKeyFuzzy(key);
这两种方式中还有对特殊字符!、|、-、"的处理,我们知道在google搜索中,用"关键词"表示结果中必须包含双引号包含的关键词,在lucene中,用"关键词1 -关键词2"表示搜索结果中包含关键词1但不包含关键词2等,所以对这样的一些特殊字符这两种方式在处理时也进行了保留,并未去掉。
2、在分词方面的一点改变,字典中条目为:计算 计算机 杂志
比如对 我爱看计算机杂志 分词,上一版本分为:我|爱|看|计算|机|杂志,此版本分为:我|爱|看|计算|计算机|杂志,这样在搜索的时候会提高准确度
3、对字典系统中条目的删除,上一个版本在某些时候会删除失败,此版本纠正了这个问题
二、搜索效果例子:
对如下一段话进行分词:
中国卫生部长陈竺昨天在国新办记者会上说,从2008年9月12日至昨天上午8时,各地报告三鹿牌婴幼儿奶粉事件患儿已高达6244例,其中,有158人发生过急性肾功能衰竭,另有3例死亡病例。 The Shijiazhuang-based dairy producer Sanlu announced that the company will recall 700 tons of infant feeding formula ("baby milk powder" 婴幼儿奶粉) that was produced before August 6.
分词结果为:
中国|卫生|卫生部|卫生部长|陈|竺|昨天|在|国|新办|记者|记者会|上说|从|2|0|0|8|年|9|月|1|2|日至|昨天|昨天上午|8|时|各地|报告|三|鹿|牌|婴幼儿|奶粉|事件|患|儿|已|高达|6|2|4|4|例|其中|有|1|5|8|人|发生|过急|性|肾|功能|衰竭|另有|3|例|死亡|病例|the|shijiazhuangbased|dairy|producer|sanlu|announced|that|the|company|will|recall|700|tons|of|infant|feeding|fmula
|baby|milk|powder|婴幼儿|奶粉|that|was|produced|befe|august|6
三、一些额外的话
关于仅基于字典分词来讲,其准确性总是有限的,这就好比乞丐就算做到了乞丐王,也还是乞丐一样,或者就如同傻瓜相机一样,再怎么摆弄也总是傻瓜相机!这是我有时写这个分词器突然之间有些迷惑的地方,我想这个基于字典的分词器在这个版本就告一段落了,就像前面说过的一样,这个版本能应用在每天有百万次访问量的系统让我感觉比较踏实,我不想推出一个让人用起来很不爽的一个东西,这也是让我感觉压力的一个地方。对于这个版本,我想最值得一说的可能是两个地方,一个是字典系统条目数量与索引创建(搜索)速度比较完美的结合,另一个是对搜索词的处理方面,至于分词,对一个仅基于字典的分词器而言,说来其实不值一提。。。
四、关于此分词器的开源
我非常能理解一些朋友希望这个分词器开源的想法,说实话,我有时看到一个用得到的东西,也希望能看到源代码就好了,但现在我这里还不能开源,先强调一下:我绝不是说这个分词器技术如何如何等之类的,所谓山外有山,人外有人,在搜索引擎方面的高手还是很多的,我想我还是应当属于菜鸟级的吧。目前我最多也就能提供这样的一个jar包,现在这个分词器已经应用在了一个正式系统中,希望朋友们能理解。
另外之前我写过几篇关于打造自己分词器的随笔,没有写完,我不知道以后有没有可能写完,但现在也是先告一段落吧
五、下载以及使用说明(也可在附带的readme.txt中获得)请访问
http://www.shuzhen.net
另外贴一个Google的一个小bug,这个bug是我在测试gg在切分搜索词的时候发现的,很有意思,贴出来玩玩
这个bug是在对搜索词进行高亮显示时出现的,我测试搜索“
子猴网”,但从图中可以看出,被高亮显示的竟然有文字“站”,这显然是不对的,当时觉得比较有意思,所以就把这个页面切了下来,大家就把这个当作娱乐看看好了。。。另外也证实了一句话:百密难免一疏,O(∩_∩)O哈哈~