如何让Zend_Search_Lucene支持中文分词
网址: http://www.blogkid.net/archives/1001.html
初探Lucene,学习之中。
昨天下雨,我家的百兆宽带突然就不能上了。所幸昨天还写了第1000篇,不然就遗憾了。不能上网也许并不是坏事,虽然我看不到了想看的人,进不去了我的GTD,可是让我得以把精力放在一些感兴趣的技术上。
昨天我ProjectCamel有点阶段性的成果。得益于泛域名和出神入化的URLRewrite,已经可以准确地显示出站点加载时的桥页。所以今天我放下了活儿,把最后一天留给自己,想看一下Zend_Search。我一直很想好好研究中文分词,可是这个暑假下来居然没有看过一下子Lucene,除了在北京和馒头空对空地来过几次分词的讨论,其他真的一点收获都没有。
不过自己也一直庆幸,我越等到后面,Lucene对中文支持就越完美,就不用自己去操心了。怀着这样的心情,我今天开始看Zend_Search_Lucene了。我成功地把自己以前做ACM写的程序编制成了索引,随便查了两下,效果很让人满意。可是当我把一些中文文档索引之后,问题就来了,根本啥都查不出来
。不是说Nutch(一个可以拿来做搜索引擎的开源程序,和Lucene貌似是一个人写的,世间的大牛不是很多哈)和Lucene都完美支持中文了么?我顿时有种被骗的感觉。
可是那也得做。网上搜来搜去,搜到的基本都是06年上半年的文章。不少牛人用自己的方式在Zend_Search_Lucene中实现了中文分词, 可看看都觉得头大,有的甚至还得给Zend_Lucene打Patch。终于搜到一个今年6月的文章,读了之后,感觉作者在PHP上的功底很不错。文章请看此处,可笑的是。查资料的过程中 ,也发现不少人转载从来不标明出处,唉,国内就这情况,重复内容太多。
需要注意的是,这个分词实现只支持UTF-8编码的。如果需要索引内容的是别的编码格式,可以改一下程序中的某些部分。
二元分词在遇到牛扑这样规模的数据时,没有任何实际意义。特别是在Zend_Search_Lucene的索引优化并不完善时。所以在这个方面,还有很深的挖掘的空间。
关于分词的知识,可以看一下这篇文章和这篇文章(希望大家不要像他这样转载不加出处)。
逆向最大匹配,应该是下一个要钻研的了。


1 Response to “如何让Zend_Search_Lucene支持中文分词”
[...] 自从前些日子写了关于Zend_Search_Lucene的东西,以及中文分词方面的一些尝试(请看这里和这里)。得益于WP优良的SEO效果,很多朋友们通过Google、百度搜到了我的blog上,邮件里、MSN上自然也有不少讨论。 [...]