选择独立的全文搜索服务器:Sphinx还是SOLR?

时间:2009-08-16 11:25:14

标签: mysql full-text-search lucene solr sphinx

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

  • 必须作为可以提供来自多个客户端的搜索请求的独立服务器运行
  • 必须能够通过索引SQL查询的结果来执行“批量索引”:说“SELECT id,text_to_index FROM documents;”
  • 必须是免费软件,必须在使用MySQL作为数据库的Linux上运行
  • 必须快(排除MySQL的内部全文搜索)

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

  • Solr(基于Lucene)
  • ElasticSearch(也基于Lucene)
  • 斯芬克斯

我的问题:

  • 他们如何比较?
  • 我错过了其他选择吗?
  • 我知道每个用例都不一样,但是在某些情况下我肯定想要使用某个包吗?

5 个答案:

答案 0 :(得分:323)

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

相似点:

  • Solr和Sphinx都满足您的所有要求。它们速度快,旨在有效地索引和搜索大量数据。
  • 两者都有一长串使用它们的高流量网站(SolrSphinx
  • 两者都提供商业支持。 (SolrSphinx
  • 两者都为多种平台/语言提供客户端API绑定(SphinxSolr
  • 两者都可以分发,以提高速度和容量(SphinxSolr

以下是一些差异:

相关问题:

答案 1 :(得分:47)

除非您需要以任何专有方式扩展搜索功能,否则Sphinx是您最好的选择。

狮身人面像的优点:

  1. 开发和设置更快
  2. 更好(更快)的聚合。这是我们的杀手锏。
  3. 不是XML。这就是最终为我们排除Solr的原因。我们必须返回相当大的结果集(想想数百个结果)然后自己聚合它们,因为缺少Solr聚合。与XML序列化的时间绝对会破坏性能。对于小结果集,它完全没问题。
  4. 我在开源应用中看到的最佳文档
  5. Solr优势:

    1. 可以延期。
    2. 可以直接从网络应用中点击它,也就是说,您可以通过AJAX直接点击Solr服务器进行自动完成搜索。

答案 2 :(得分:20)

注意:有许多用户都在考虑相同的问题。

所以,回答这一点:

哪个和为什么?

  • 如果您打算在网络应用中使用 Solr (示例网站搜索引擎)。由于它的API,它肯定会变得很棒。你肯定需要为网络应用程序提供这种能力。

  • 如果您想快速搜索大量文档/文件,请使用 Sphinx 。它也快速索引。我建议不要在涉及JSON或解析XML的应用程序中使用它来获取搜索结果。用于直接dB搜索。它适用于MySQL。

<强>替代

虽然这些是巨人,但还有更多。此外,有些人使用这些来支持他们的自定义框架。所以,我会说你真的没有错过任何一个。虽然有一个elasticsearch具有良好的用户群。

答案 3 :(得分:19)

我已经使用Sphinx差不多一年了,这真是太神奇了。 我可以在MacBook上大约一分钟索引150万个文档,甚至可以在服务器上更快。我也在使用Sphinx将搜索限制在特定纬度范围内的位置。经度,而且非常快。 此外,如何排名结果是非常可调整的。 易于安装和设置,如果您阅读一两个教程。 几乎是1.0的状态,但他们的候选人已经坚如磐石了。

答案 4 :(得分:2)

Lucene / Solr似乎更具特色,业务年限更长,用户社区更强大。 imho如果你能够解决一些似乎面临的初始设置问题(不是我们)那么我会说Lucene / Solr是你最好的选择。