问题:选择独立的全文搜索服务器:Sphinx 还是 SOLR? [关闭]

我正在寻找具有以下属性的独立全文搜索服务器:

  • 必须作为独立服务器运行,可以服务来自多个客户端的搜索请求

  • 必须能够通过索引 SQL 查询的结果来进行“批量索引”:比如“SELECT id, text_to_index FROM documents;”

  • 必须是免费软件,必须在以 MySQL 为数据库的 Linux 上运行

  • 一定要快(排除MySQL内部全文搜索)

我发现具有这些属性的替代品是:

  • Solr(基于Lucene)

  • ElasticSearch(同样基于Lucene)

  • 狮身人面像

我的问题:

  • 他们如何比较?

  • 我错过了任何替代方案吗?

  • 我知道每个用例都是不同的,但是在某些情况下我肯定_不_想要使用某个包?

解答

我已经成功使用 Solr 快 2 年了,从未使用过 Sphinx,所以我显然有偏见。但是,我会尝试通过引用文档或其他人来保持客观。我也会为我的答案打补丁:-)

相似之处:

  • Solr 和 Sphinx 都能满足您的所有要求。它们速度很快,旨在有效地索引和搜索大量数据。

  • 两者都有一长串使用它们的高流量站点(Solr,Sphinx)

  • 两者都提供商业支持。 (Solr,狮身人面像)

  • 两者都为多种平台/语言提供客户端 API 绑定(Sphinx,Solr)

  • 两者都可以分发以提高速度和容量(Sphinx,Solr)

以下是一些区别:

  • Solr 作为一个 Apache 项目,显然是 Apache2 许可的。狮身人面像是 GPLv2。这意味着如果您需要在商业应用程序中嵌入或扩展(不仅仅是“使用”)Sphinx,则必须购买商业许可证(基本原理)

  • Solr 是可轻松嵌入 Java 应用程序中的。

  • Solr 建立在 Lucene 之上,这是一项经过验证的技术,比8 岁具有huge 用户群(这只是一小部分)。每当 Lucene 获得新功能或加速时,Solr 也会获得它。许多致力于 Solr 的开发人员也是 Lucene 提交者。

  • Sphinx 与 RDBMS 的集成更加紧密,尤其是 MySQL。

  • Solr可以与Hadoop集成构建分布式应用

  • Solr 可以将与 Nutch 集成,快速构建一个成熟的网络搜索引擎,带有爬虫。

  • Solr 可以索引专有格式,如 Microsoft Word、PDF 等。狮身人面像不能。

  • Solr 带有一个开箱即用的拼写检查器。

  • Solr 带有开箱即用的刻面支持。 Sphinx中的刻面需要更多的工作。

  • Sphinx 不允许对字段数据进行部分索引更新。

  • 在 Sphinx 中,所有文档 id 必须是唯一的无符号非零整数。 Solr甚至不需要许多操作的唯一键,唯一键可以是整数或字符串。

  • Solr 支持字段折叠(目前仅作为附加补丁)以避免重复类似的结果。 Sphinx 似乎没有提供任何这样的功能。

  • 虽然Sphinx 旨在仅检索文档 ID,但在 Solr 中,您可以直接获取包含几乎任何类型数据的整个文档,使其更加独立于任何外部数据存储,并且节省了额外的往返。

  • Solr,除了使用嵌入式时,运行在Java web 容器例如 Tomcat 或 Jetty,这需要额外的特定配置和调整(或者您可以使用[包含的 Jetty]和 zwz100 )。 Sphinx 没有额外的配置。

相关问题:

  • 使用 Rails 进行全文搜索

  • 全文搜索引擎对比——Lucene、Sphinx、Postgresql、MySQL?

Logo

华为、百度、京东云现已入驻,来创建你的专属开发者社区吧!

更多推荐