Sphinx的含义是“狮身人面像”,是古埃及的金字塔建筑,传说Sphinx是有翼的狮身女怪,她常叫过路行人猜谜, 猜不出者即遭杀害。

但是我这里说的Sphinx是一个高性能的搜索引擎:

http://www.sphinxsearch.com/

Sphinx是一个俄国人开发的搜索引擎,它的主要特点是:

一、性能非常出色
150万条记录一两分钟就索引完毕,2-4GB以内的文本检索速度不到0.1秒钟。ferret也望尘莫及,更不要说lucene了。

二、和数据库集成性很好
Sphinx通过配置文件可以自行读取数据库信息做索引,不依赖任何外部的应用程序,并且可以作为一个daemon进程启动,支持分布式检索,并发响应性能很好。因此很多过去使用ferret的人因为并发检索的问题都改用Sphinx了。

三、可以做MySQL的全文检索
MySQL的数据库引擎是可插拔的结构,Sphinx开发了一个SphinxSE数据库引擎,可以在编译MySQL的时候直接编译到MySQL里面去,这样的话,可以在数据库级别支持高性能的全文检索,那么你可以以如下SQL方式去全文检索了:

select * from xxxx where query='test;sort=attr_asc:group_id' AND ....;

很棒吧。


四、RoR支持也很棒
有一个acts_as_sphinx插件,类似acts_as_ferret,集成到RoR里面很简单。

Sphinx目前可能存在的问题估计还是中文分词问题:

Sphinx支持UTF-8编码的分词,但是他自己的文档上面说仅仅支持英文和俄文的分词,因此我估计对中文分词可能还不能很好的支持。

总之,Sphinx是我们另外一个很棒的选择。
评论
willsonchan 2008-05-02
我来做一下小白鼠,服务器是Debian + Mysql 5 + Apache + PHP,2005年买的联想万全服务器,1G的内存;做了一个采集网站,数据库UTF-8编码,56万的数据,有中英文,对标题,来源,时间等做了全文检索,全文查询速度在0.0n秒内。

由于是采集网站,数据会一直更新,因此用了实时更新索引的方法,每5分钟更新一次delta索引,每天晚上merge一次。delta索引更新所需时间近似忽略。

只是花了两天时间整的,没有任何优化。

测试地址:http://www.haokanshu.cn/

欢迎sphinx用户一起探讨:willsonchan@gmail.com
rainchen 2007-10-15
最近出了个新的全文索引插件:acts_as_fulltextable
http://blog.wonsys.net/posts/26-our-first-plugin-acts_as_fulltextable/

其核心是直接使用mysql自带的full-text search。
据介绍,其作者并不是吃饱没事干,也不是为了挑战自我,而是在使用过了acts-as-ferret和acts_as_sphinx后不满意才“被逼”要出手DIY的。因为他们在使用acts-as-ferret时,大量写入会使其索引莫名出错;转用robbin在本篇里介绍的acts_as_sphinx,又时常发生sphinx的守护进程没有响应的问题。

另一个细节:
acts_as_fulltextable实现full-text index不是直接把模型需要字段的索引改为FULLTEXT INDEX,而是给需要搜索的model添加一个has_many :through 多态关联,统一把所有需要索引的模型都丢到一个fulltext_rows表里,以便实现跨表全文索引。
这样做的优点:
1.易部署:mysql的full-text search只支持MyISAM,如果原本项目是用InnoDB的也不影响,只要保证fulltext_rows表类型是MyISAM(默认用script/generate fulltext_rows model1 model2 model3 ...生成的就是,不需操心)
2.易扩展:即使增加新的模型时也能方便对接上。
3.跨模型:如常见的站内搜索“所有的”功能。
缺点:
需要占用多2倍以上的空间:fulltext_rows的数据 + mysql自身索引。

做搜索难,做全文搜索更难,做支持中文的全文搜索更是难上加难,要老外来做中文全文搜索则完全是final fantasy!

地球人都知道,mysql自带的full-text search不支持中文分词,不然full-text search对中国程序员来说早就不是个问题了。
不过国内有程序员做了个MySQL Fulltext 全文检索中文分词补丁
http://www.hightman.cn/index.php?myft
支持MySQL-4.0.x ,MySQL-5.1.x
有心人可以尝试与acts_as_fulltextable结合使用。
wzh1008 2007-10-13
一、性能非常出色
150万条记录一两分钟就索引完毕,2-4GB以内的文本检索速度不到0.1秒钟。


真的好恐怖啊
jiaxiang12-04 2007-10-10
怎么没有人解释这句话呢?
select * from xxxx where query='test;sort=attr_asc:group_id' AND ....;
linginfanta 2007-09-28
粗看了一下,目前支持的数据库好像只有Mysql。
Features里描述的index及search的速度很有诱惑。
小白鼠就不当了,等它再长大些吧。
关注ing。
fxsjy 2007-09-28
robbin,您好,我的MySQL中有一个表是utf-8编码,数据中有中文也有英文。
我在sphinx.conf中的设置为charset_type = sbcs,发现可以搜索到我要得结果,但是也有些结果并不含我输入的关键词。

后来,我又设置为charset_type = utf-8,结果发现只能检索到英文关键词了。

所以,想向你请教一下如何配置sphinx.conf文件才能处理中英混合的语料呢?

谢谢!
liuzongan 2007-09-21
请问一下,robbin
sphinx在windows 下安装是不是需要Microsoft Visual C/C++ Studio .NET 2003 or 2005这个平台?谢谢
joyjiang 2007-09-19
引用
"150万条记录一两分钟就索引完毕" ---太恐怖了 每秒能处理12500条? 回想Lucene才多少..

你用的是什么机器和什么数据做的测试呢?可以告知一下吗?
geszJava 2007-09-18
索引速度如果有150w rec/min,那么是相当的快,lucene的中文文档索引通常是1.8w rec/min,不过貌似robbin使用的应该是英文文档把.英文文档索引速度当然是很快的.
geszJava 2007-09-18
检索速度貌似不是特别强啊,lucene 50G的全文检索,通常也只需要0.0x秒.
linhong_1001 2007-09-16
C++的玩意,为什么要和lucene比呢?
RyanPoy 2007-09-14
引用
150万条记录一两分钟就索引完毕

我觉得要看150w纪录的数据大小是多少?

引用
2-4GB以内的文本检索速度不到0.1秒钟。

2-4GB以内的文本检索,只得是2-4GB的加载源文件。还是加载后的索引文件?
cjyzpcl 2007-09-14
liyao20050101 写道
150万条记录一两分钟就索引完毕,2-4GB以内的文本检索速度不到0.1秒钟
好强啊,这么的搜索引擎,大家多研究研究。!!!
真的 很强! 试用。。。

成熟应用太少了,我反正是暂时不会使用的。
liyao20050101 2007-09-14
150万条记录一两分钟就索引完毕,2-4GB以内的文本检索速度不到0.1秒钟
好强啊,这么的搜索引擎,大家多研究研究。!!!
真的 很强! 试用。。。
jonson 2007-09-12
有没有比较数据啊。
测试 环境都一样吗?
对于中文搜索会性能有影响吗?
有没有权威点的测试 数据呢。
可以的话系统的做个比较啊
和lusence什么的
javsky 2007-09-12
引用
150万条记录一两分钟就索引完毕,2-4GB以内的文本检索速度不到0.1秒钟
好强啊,这么的搜索引擎,大家多研究研究。
imjl 2007-09-12
成熟应用就两个。。
imjl 2007-09-12
一: 版本数字还是0.××,,,也就是还没正式版。

二: 我看了下,还没比较好的中文分词(半年前我一朋友自己写了个,好像是基于sphi×,)

三: 分布式还不成熟

四: 很多企业特征无


期待robbin的“小白鼠”经验和心得,,,
fyting 2007-09-11
blowfisher 写道
"150万条记录一两分钟就索引完毕" ---太恐怖了 每秒能处理12500条? 回想Lucene才多少..

得看具体应用,一条记录可大可小的……索引速度还牵涉到分词、I/O、还有数据库与索引程序之间的通信吧。
ps:我觉得分词要自己写才好控制,可以加入很多应用相关的东西进去。
crazycode 2007-09-11
引用
select * from xxxx where query='test;sort=attr_asc:group_id' AND ....;

对呀,这个语法有点怪怪的,where子句应该是做约束的,这里还包括了sort,那order by怎么办?
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

robbin
搜索本博客
我的相册
213cbb75-7dae-37b2-b9ce-9e7b49f784d3-thumb
游乌镇
共 33 张
其他分类
存档
最新评论