全文检索:sphinx elasticsearch xunsearch 比较

Posted zifan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全文检索: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++
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,Python,Perl,Ruby 多语言 只 PHP
支持数据类型   文本、数字、地理(Geo)、结构化、非结构化 文本、数字
数据存储形式   Json XML
       

以上是关于全文检索:sphinx elasticsearch xunsearch 比较的主要内容,如果未能解决你的问题,请参考以下文章

同步 MySQL 数据到 Elasticsearch

全文检索

对比ElasticSearch与Sphinx

ElasticSearch、Sphinx、Lucene、Solr、Xapian。哪个适合哪个用途? [关闭]

ElasticSearch、Sphinx、Lucene、Solr、Xapian。哪个适合哪个用途? [关闭]

PHP中使用Sphinx中文全文检索/搜索