论坛首页 编程语言技术论坛

JavaEye3.0开发手记之三 - 狮身人面

浏览 26100 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-09-10  
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是我们另外一个很棒的选择。
   发表时间:2007-09-10  
对中文分词支持如果和Ferret差不多也搞着能用
0 请登录后投票
   发表时间:2007-09-11  
俄国人?还是叫俄罗斯人比较好 哦
0 请登录后投票
   发表时间:2007-09-11  
引用
select * from xxxx where query='test;sort=attr_asc:group_id' AND ....;


这个sql,不常见,知道什么语法?解析一下
是安装插件后扩展的吗?
1 请登录后投票
   发表时间:2007-09-11  
"150万条记录一两分钟就索引完毕" ---太恐怖了 每秒能处理12500条? 回想Lucene才多少..
0 请登录后投票
   发表时间:2007-09-11  
引用
select * from xxxx where query='test;sort=attr_asc:group_id' AND ....;

对呀,这个语法有点怪怪的,where子句应该是做约束的,这里还包括了sort,那order by怎么办?
0 请登录后投票
   发表时间:2007-09-11  
blowfisher 写道
"150万条记录一两分钟就索引完毕" ---太恐怖了 每秒能处理12500条? 回想Lucene才多少..

得看具体应用,一条记录可大可小的……索引速度还牵涉到分词、I/O、还有数据库与索引程序之间的通信吧。
ps:我觉得分词要自己写才好控制,可以加入很多应用相关的东西进去。
0 请登录后投票
   发表时间:2007-09-12  
一: 版本数字还是0.××,,,也就是还没正式版。

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

三: 分布式还不成熟

四: 很多企业特征无


期待robbin的“小白鼠”经验和心得,,,
0 请登录后投票
   发表时间:2007-09-12  
成熟应用就两个。。
0 请登录后投票
   发表时间:2007-09-12  
引用
150万条记录一两分钟就索引完毕,2-4GB以内的文本检索速度不到0.1秒钟
  好强啊,这么的搜索引擎,大家多研究研究。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics