很多时候。我们选择了用模糊查询匹配标题来实现,本日给大家先容一个更专业的检索办法:Sphinx
Sphinx 单一索引最大可包含1亿条记录,在1千万条记录情形下的查询速率为0.x秒(毫秒级)。Sphinx创建索引的速率为:创建100万条记录的索引只需 3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重修一次只需几十秒。
便是这么神奇!
!
!
你心动了吗?
1、 Sphinx是什么
Sphinx是由俄罗斯人Andrew Aksyonoff开拓的基于SQL一个全文检索引擎。意图为其他运用供应高速、低空间占用、高结果 干系度的全文搜索功能。可以结合MySQL,PostgreSQL做全文搜索,它可以供应比数据库本身更专业的搜索功能,使得运用程序更随意马虎实现专业化的全文检索。Sphinx特殊为一些脚本措辞设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL也设计了一个存储引擎插件。
2 Sphinx的特性
高速的建立索引(在当代CPU上,峰值性能可达到10 MB/秒);
高性能的搜索(在2 – 4GB 的文本数据上,均匀每次检索相应韶光小于0.1秒);
可处理海量数据(目前已知可以处理超过100 GB的文本数据, 在单一CPU的系统上可 处理100 M 文档);
供应了精良的干系度算法,基于短语相似度和统计(BM25)的复合Ranking方法;
支持分布式搜索;
支持短语搜索
供应文档择要天生
可作为MySQL的存储引擎供应搜索做事;
支持布尔、短语、词语相似度等多种检索模式;
文档支持多个全文检索字段(最大不超过32个);
文档支持多个额外的属性信息(例如:分组信息,韶光戳等);
支持断词;
中文的全文检索和英文等latin系列不一样,后者是根据空格等分外字符来断词,而中文是根据语义来分词。目前大多数数据库尚未支持中文全文检索,如Mysql。故,海内涌现了一些Mysql的中文全文检索的插件,做的比较好的有hightman的中文分词。Sphinx如果须要对中文进行全文检索,也得须要一些插件来补充。个中我知道的插件有 coreseek 和 sfc 。
coreseek是现在用的最多的sphinx中文全文检索,它供应了为Sphinx设计的中文分词包LibMMSeg 。并供应了多个别系的二进制发行版,个中有rpm,deb及windows下的二进制包。其余,coreseek也为sphinx贡献了以下事变:
GBK编码的数据源支持
采取Chih-Hao Tsai MMSEG算法的中文分词器
中文利用手册(这份中文手册对海内利用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对中文分词的一个扩展库。
此外,如果你对中文分词不感兴趣。或者说仅须要实现类似sql中like的功能,如: select from product where prodName like ‘%手机%’。sphinx也不会让你失落望,这个或许便是官网对中文的大略实现——直接对字索引。并且搜索速率还不错^_^ 。
安装、配置过程。请大家自行查资料吧。在此我就不罗嗦了。
PHP+MYSQL+Sphinx 操作流程
大略的中文分词例子
Sphinx官网链接:http://sphinxsearch.com/