全文检索:sphinx elasticsearch xunsearch 比较

简介:

Sphinx 是一款基于SQL的高性能全文检索引擎

  • 快速创建索引:3分钟左右即可创建近100万条记录的索引,并且采用了增量索引的方式,重建索引非常迅速。

  • 闪电般的检索速度:尽管是1千万条的大数据量,查询数据的速度也在毫秒级以上,2-4G的文本量中平均查询速度不到0.1秒。

  • 为很多脚本语言设计了检索API,如PHP,Python,Perl,Ruby等,因此你可以在大部分编程应用中很方便地调用Sphinx的相关接口。

  • 为MySQL设计了一个存储引擎插件,因此如果你在MySQL上使用Sphinx,那简直就方便到家了。

  • 支持分布式搜索,可以横向扩展系统性能。

Elasticsarch 是一个分布式的开源搜索和分析引擎

  • Elasticsearch 是一个分布式的、开源的搜索分析引擎,支持各种数据类型,包括文本、数字、地理、结构化、非结构化。

  • Elasticsearch 是基于 Apache Lucene 的。

  • Elasticsearch 因其简单的 REST API、分布式特性、告诉、可扩展而闻名。

  • Elasticsearch 是 Elastic 产品栈的核心,Elastic 产品栈是个开源工具集合,用于数据接收、存储、分析、可视化。

Xunsearch 基于 xapian 和 scws 开发的全文搜索引擎

  • 简单易用:前端是使用脚本语言编写的开发工具 (SDK),目前支持 PHP 语言。API 简单清晰,开发难度极低,提供全中文的示例代码、文档、辅助脚本工具等。

  • 搜索功能齐全:支持包括字段检索、结果高亮、 字段排序、布尔语法、区间检索、聚合搜索、相关搜索、权重微调、拼音搜索、 搜索建议等等专业搜索引擎具备的功能。

比较:

  Sphinx Elasticsarch Xunsearch
开发语言 基于C/C++ 基于java 基于C/C++
搜索功能支持 1. 全文
2. 自动完成建议
3. 分面
4. 多字段
5. 同义词(称为字形)
6. 地理空间
7. 突出显示(称为片段)
8. 拼写检查(称为qsuggest)
1.全文
2.自动完成建议
3.分面
4.多场
5.同义词
6.模糊
7.地理空间
1.全文
2.搜索建议
3.分面
4.拼音搜索
5.突出显示
6.权重微调
7.拼写检查/纠错
8.突出显示
MySQL数据导入速度 Sphinx > Elasticsearch > Xunsearch
增量更新支持

ElasticSearch、Xunsearch 优于 Sphinx

ElasticSearch、Xunsearch把增量更新作为首选CURD方式;

Sphinx使用辅助表的方案不但不优雅,还会让你的其他系统变得复杂起来,在你频繁更改单条数据的时候很容易出错

可视化与辅助管理工具 Sphinx Tools

Kibana,Beats,Logstash,Marvel,Head

Kibana支持可视化的报表数据,Beats、Logstash偏重于log收集

 无
检索速度 Sphinx > Elasticsearch > Xunsearch
对中文支持 Xunsearch 优于 Sphinx、Elasticsearch,Xunsearch支持拼音搜索
搜索算法支持-Ranker自定义

Elasticsearch > Sphinx > Xunsearch

在自定义Ranker方面,Elastic Search的Function Score Query比Sphinx的expression-ranker强大许多。

横向扩展与高可用

Elasticsearch > Sphinx(Xunsearch支持分布式不支持群集,前端和后端可以分离部署在不同服务器中)

资源占用 Sphinx > Elasticsearch > Xunsearch
易用性 Xunsearch > Sphinx > Elasticsearch
检索API语言支持  多语言 多语言 只 PHP
支持数据类型

文本、数字、地理(Geo)、结构化、非结构化

Sphinx适用于结构化数据(预定义文本字段和非文本属性),但它不是处理非结构化数据(DOC,PDF,MP3等)的项目的最佳选择

文本、数字、地理(Geo)、结构化、非结构化 文本、数字
数据存储形式   Json  
       
posted @ 2020-07-05 18:40  下班闪电去打卡  阅读(2313)  评论(0编辑  收藏  举报