全文索引Sphinx和sphinx的中文分词

网站需要做全文索引,所以研究了一下sphinx
1 Sphinx是什么
Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎。意图为其他应用提供高速、低空间占用、高结果 相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式 的XML数据。通过修改源代码,用户可以自行增加新的数据源(例如:其他类型的DBMS 的原生支持)
Sphinx是基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL也设计了一个存储引擎插件。
Sphinx 单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为:创建100万条记录的索引只需 3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。

php+sphinx+mysql架构图

php+sphinx+mysql架构图

sphinx的官网:http://www.sphinxsearch.com/

当前最新稳定版本:2.0.4-release (Mar 2012)

2 中文分词

  Coreseek 

官网地址:http://www.coreseek.cn/

用的最多的sphinx中文全文检索,它提供了为Sphinx设计的中文分词包LibMMSeg。这个项目用的词库格式与普通词库的格式不一样, 还需要转换一下格式才能转换成词库文件. 这个项目里提供了一个叫mmseg的可执行文件做词库生成,  做繁体的定制是要收费的

sfc(sphinx-for-chinese)

官网打不开http://www.sphinx-search.com

google code:http://code.google.com/p/sphinx-for-chinese/

这个项目是在每个Sphinx的发行版中, 在sphinxutils.cpp中加入了一个新参数 chinese-dictionary, 在sphinx.cpp 中加入mmseg实现的分词算法, 除此外没有其他改动, 比较接近原始的sphinx程序. 它的词典是用mkdict.exe生成的, 词典就是规则的 word fq 格式, 直接用convertz转换简体至繁体, 也可以顺利生成词典. 有一个小小的缺憾是似乎不能设置复合分词, 例如”官方声明”会被作为单个词索引, 这样搜索”声明”时不会出现. 复合分词的冗余会带来磁盘消耗, 但是实际使用中还是需要有复合分词的支持.

SCWS

官网:http://www.ftphp.com/scws/

Xunsearch项目的一部分

 

Tags: ,

星期三, 4 7 月, 2012 Web

Leave a Reply

1LMooBmUE153Wnd3zDryWvDyXxQudbFxDr