全文检索:sphinx_elasticsearch_xunsearch选型分析
开发语言:
Sphinx和Xunsearch是基于C/C++开发、Elasticsearch基于java开发
MySQL数据导入及索引生成:
Sphinx > Elasticsearch > Xunsearch Sphinx跟RDBMS(特别是MYSQL)绑定的特别紧密,在导入MySQL数据生成索引时,从易用性、可靠性、速度上来看,Sphinx优于ElasticSearch。Sphinx真的很快。ElasticSearch官方文档上,数据都是使用RESTful接口一条一条插入的,也就是增量更新。有个bulk接口,可以批量导入、大幅加快速度
增量更新支持:
ElasticSearch、Xunsearch优于Sphinx。ElasticSearch、Xunsearch把增量更新作为首选CURD方式;而Sphinx使用辅助表的方案不但不优雅,还会让你的其他系统变得复杂起来,在你频繁更改单条数据的时候很容易出错。
可视化与辅助管理工具:
ElasticSearch:Kibana,Beats,Logstash,Marvel,Head Sphinx:Sphinx Tools PS:Kibana支持可视化的报表数据,Beats、Logstash偏重于log收集
检索速度:
Sphinx > Elasticsearch > Xunsearch
PS: 如果配置群集,群集越多搜起来就越快
对中文支持:
Xunsearch > Sphinx,Xunsearch支持拼音搜索
搜索算法支持 - Ranker自定义:
Elasticsearch > Sphinx > Xunsearch
PS:在自定义Ranker方面,Elastic Search的Function Score Query比Sphinx的expression-ranker强大许多。
横向扩展与高可用:
Elasticsearch > Sphinx
PS:Xunsearch未发现群集/分布式之列的文档。ElasticSearch有更强的横向扩展能力和高可用性。
资源占用:
Sphinx > Elasticsearch > Xunsearch
易用性:
Xunsearch > Sphinx > Elasticsearch
PS:'>'符号理解为优于。