中文全文检索Coreseek, Sphinx-for-Chinese, SCWS的使用对比

最近在做网站的全文检索, 因为网站前端使用的是PHP, Java的效率不高, 资源消耗和维护成本都比较大, 所以排除掉了Lucence. 最开始考虑的是Sphinx. 有一个中文的Sphinx项目叫Coreseek, 最开始是用这个来做测试的. 按网站上说明的配置, 搭建过程也比较顺利, 但是有一个问题是, 找不到繁体的词库. 因为这个项目用的词库格式与普通词库的格式不一样, 还需要转换一下格式才能转换成词库文件. 这个项目里提供了一个叫mmseg的可执行文件做词库生成, 但是每次生成都报"error!!!". 经过排查后发现在繁体中, 如果出现全角的数字后, 就会出现error, 咨询了这个项目的所有者, 做繁体的定制是要收费的. 然后找到了另一个同是sphinx的中文项目, 叫Sphinx-for-Chinese, 这个项目是在每个Sphinx的发行版中, 在sphinxutils.cpp中加入了一个新参数 chinese-dictionary, 在sphinx.cpp 中加入mmseg实现的分词算法, 除此外没有其他改动, 比较接近原始的sphinx程序. 它的词典是用mkdict.exe生成的, 词典就是规则的 word fq 格式, 直接用convertz转换简体至繁体, 也可以顺利生成词典. 有一个小小的缺憾是似乎不能设置复合分词, 例如"官方声明"会被作为单个词索引, 这样搜索"声明"时不会出现. 复合分词的冗余会带来磁盘消耗, 但是实际使用中还是需要有复合分词的支持. 最后是SCWS. 这个项目我在2008年的时候就已经注意过, 因为那时候我也在做phpbb3的搜索功能. phpbb是按分词/索引的形式构建的搜索, 和国内的论坛不一样. 因为是PHP的实现, 而且无词库所以只能用的二分法. SCWS的分词很好的弥补了这个缺陷, 但是因为要安装PHP扩展, 很多租用网站空间的站长无法使用. 似乎是去年下半年, hightman发布了基于SCWS的中文全文搜索套件xunsearch. 这将scws作为一个服务组件, 结合索引库的实现通过socket端口对外提供索引和查询的服务, 使得scws除了php扩展形式外又增加了新的应用. 和Sphinx不一样, scws需要使用php脚本作为构建索引和查询的接口, sphinx是自带的mysql客户端调用, 因此重建索引的速度较sphinx要慢, 但是在特征量的灵活性上要好一些.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值