最近进行平台的架构设计,需要多全文检索系统进行选型,备选有Lucence、Sphinx和Xunsearch。就成熟度来说Lucence>Sphinx>Xunsearch。但因为系统脚本大部分使用的是PHP,如果再使用Java,那么两个不同容器会增加服务器的负担,开发压力压会加重,所以放弃Lucence,选用可以直接支持PHP的Sphinx和Xunsearch。
以前只是用过Lucence,研究过Sphinx,Xunsearch是最近才知道的,据说提供更好的PHP SDK,以及更短的开发效率。这些要用了才知道,我在系统实现之前,能做的就是比较他们性能。下面就是各自官方提供的一些性能和特性比较,因为未知他们硬件的情况,所以这个比较只有一定的参照性,误差还是比较大的。
两者都可以基于
MySQL,都是基于C/C++开发的。Xunsearch是国内开源团队基于国外的Xapian,所有有些是直接基于Xapian和Sphinx的比较。
单一索引最大记录
------------------
Sphinx: 1亿条记录
建立索引的速度
------------------
Sphinx: 100万条记录/3~4分钟,1000玩条记录/50分钟内
Xunsearch: 1万条距离/4.14分钟
查询速度
------------------
Sphinx: 1千万条记录下为0.x秒(毫秒级)
Xunsearch: 100万条记录为0.5秒
分布式搜索
------------------
Sphinx: 支持
Xunsearch: 未发现相关文档
对中文支持
------------------
Xunsearch > Sphinx,Xunsearch支持拼音搜索
使用简单化
------------------
Xunsearch > Sphinx
先比较这么多。其实针对当前的项目,对开发周期要求比较高,所以最后选择简单易用的Xunsearch。
it动力的站内搜索就是使用了sphinx来做为站内搜索,总体来说,sphinx安装、配置和php接口开发,都是比较简单的。并不是想像中那么复杂。大家可以试着学习一下,我们站内也提供了多个相关的 sphinx教程:
1、 使用PHP+Sphinx建立高效的站内搜索引擎
2、 Sphinx速成指南(里面针对sphinx.conf有详细的中文解释) sphinx搜索小技巧
3、 sphinx中的索引合并merge二则问题 增量索引中去除旧文档或合并过程中的过滤
it动力的站内搜索就是使用了sphinx来做为站内搜索,总体来说,sphinx安装、配置和php接口开发,都是比较简单的。并不是想像中那么复杂。大家可以试着学习一下,我们站内也提供了多个相关的 sphinx教程:
1、 使用PHP+Sphinx建立高效的站内搜索引擎
2、 Sphinx速成指南(里面针对sphinx.conf有详细的中文解释) sphinx搜索小技巧
3、 sphinx中的索引合并merge二则问题 增量索引中去除旧文档或合并过程中的过滤