2010
11.02

初识Sphinx

Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎。意图为其他应用提供高速、低空间占用、高结果 相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式 的XML数据。通过修改源代码,用户可以自行增加新的数据源(例如:其他类型的DBMS 的原生支持)

Sphinx的特性

    * 高速的建立索引(在当代CPU上,峰值性能可达到10 MB/秒);
    * 高性能的搜索(在2 – 4GB 的文本数据上,平均每次检索响应时间小于0.1秒);
    * 可处理海量数据(目前已知可以处理超过100 GB的文本数据, 在单一CPU的系统上可 处理100 M 文档);
    * 提供了优秀的相关度算法,基于短语相似度和统计(BM25)的复合Ranking方法;
    * 支持分布式搜索;
    * 支持短语搜索
    * 提供文档摘要生成
    * 可作为MySQL的存储引擎提供搜索服务;
    * 支持布尔、短语、词语相似度等多种检索模式;
    * 文档支持多个全文检索字段(最大不超过32个);
    * 文档支持多个额外的属性信息(例如:分组信息,时间戳等);
    * 支持断词;

Sphinx中文分词

中文的全文检索和英文等latin系列不一样,后者是根据空格等特殊字符来断词,而中文是根据语义来分词。目前大多数数据库尚未支持中文全文检索,如Mysql。故,国内出现了一些Mysql的中文全文检索的插件,做的比较好的有hightman的中文分词。Sphinx如果需要对中文进行全文检索,也得需要一些插件来补充。其中我知道的插件有 coreseek 和 sfc 。

    * Coreseek是现在用的最多的sphinx中文全文检索,它提供了为Sphinx设计的中文分词包LibMMSeg 。并提供了多个系统的二进制发行版,其中有rpm,deb及windows下的二进制包。另外,coreseek也为sphinx贡献了以下事项:
          o GBK编码的数据源支持
          o 采用Chih-Hao Tsai MMSEG算法的中文分词器
          o 中文使用手册(这份中文手册对国内使用sphinx新手——特别是英语不太好的人来说,提供了极大的便利)
    * sfc(sphinx-for-chinese)是由网友happy兄提供的另外一个中文分词插件。其中文词典采用的是xdict。据其介绍,经过测试,目前版本在索引速度上(Linux 测试平台)基本上能够达到索引UTF-8英文的一半,即官方宣称速度的一半。(时间主要是消耗在分词上)。 现提供了与sphinx最新版(sphinx 0.9.10)同步的sphinx-for-chinese-0.9.10-dev-r2006.tar.gz 。此版本增加了sql_attr_string,经过本人的测试。其安装和配置都非常方便。happy兄在分词方面还有另外一个贡献——php-mmseg,这是php对中文分词的一个扩展库。

相关资料:
http://www.sphinxsearch.org/?page_id=15
http://www.sphinxsearch.com/wiki/doku.php?id=sphinx_chinese_tutorial
http://www.coreseek.cn/uploads/pdf/sphinx_doc_zhcn_0.9.pdf

相关网站:
http://www.sphinxsearch.org/
http://www.sphinxsearch.com/
http://www.coreseek.cn/

回复功能关闭