【问题标题】:Choosing a stand-alone full-text search server: Sphinx or SOLR? [closed]选择独立的全文搜索服务器:Sphinx 还是 SOLR? [关闭]
【发布时间】:2010-11-20 00:33:51
【问题描述】:

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

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

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

  • Solr(基于 Lucene)
  • ElasticSearch(同样基于 Lucene)
  • 狮身人面像

我的问题:

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

【问题讨论】:

  • 你排除了直接使用 Lucene 吗? Solr 是 lucene 之上的服务,所以直接的 Lucene 是可能的。
  • Lucene 有独立服务器模式吗?我认为这是 SOLR 添加的内容之一?我没有排除任何事情——所以如果考虑到要求,那是最好的选择,请随意提倡 Lucene :-)
  • mausch:主要是 Java,但也有其他语言。
  • 我个人喜欢狮身人面像。然而,在最近的一个“大型”项目中,最新的候选版本 (0.9.9-rc2) 在使用多值数组 (MVA) 时出现了阻止错误。这将是随机的结果!所以我们转向 SOLR 来解决这个问题。一旦 SOLR 启动并运行,性能就很好,并且没有显示停止错误。
  • 你看过 elasticsearch.com 吗?

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


【解决方案1】:

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

相似之处:

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

这里有一些区别:

相关问题:

【讨论】:

  • 谈到开发人员同时致力于 Solr 和 Lucene,似乎他们已经合并了这两种产品,使进一步的开发更容易和更快 - lucidimagination.com/blog/2010/03/26/…
  • @斯坦恩:怎么会这样?我用 Solr 快 5 年了,从来不需要写一行 Java。
  • @MauricioScheffer 你真的认为 java 代码会比 C++ 更快吗?这是 Bill Karwin 和 Sphinx 进行的比较,那里的查询速度比 lucene 快 10 倍(而且 solr 必须比它还要慢。)slideshare.net/billkarwin/…
  • @Stann :你真的认为你需要比 whitehouse.gov、Netflix、The Guardian、digg 更多的性能吗?仅举几个使用 Solr 的网站? wiki.apache.org/solr/PublicServers
  • Here is an answer on Sphinx 这是 Solr 上这个答案的好搭档
【解决方案2】:

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

狮身人面像的优势:

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

Solr 优势:

  1. 可以扩展。
  2. 可以直接从 Web 应用程序中找到它,即,您可以通过 AJAX 直接在 Solr 服务器上进行类似自动完成的搜索。

【讨论】:

  • Solr 有许多除 xml 之外的响应编写器,包括 JSON、PHP、Ruby、Python 和 java 二进制格式:lucene.apache.org/solr/api/org/apache/solr/request/…
  • 我有没有提到 Solr/Lucene 文档有多糟糕?必须通过 Javadocs 来确定功能不是我对文档的想法。
  • 我应该链接到维基:wiki.apache.org/solr/…
  • 我花了一整天时间在我的 mac 上修复 sphinx 0.9.9 的一些安装错误。到目前为止,它仍然无法正常工作。它是如此的错误。我使用了非常建议的方法。我放弃了真的很沮丧......
  • solr 的文档不如 sphinx。但社区很大。而且我总是可以通过阅读 solr 的源代码来弄清楚一切。
【解决方案3】:

注意:有很多用户有相同的问题。

所以,回答重点:

为什么?

  • 如果您打算在您的网络应用(示例站点搜索引擎)中使用它,请使用 Solr。多亏了它的 API,它肯定会变得很棒。网络应用程序肯定需要这种能力。

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

替代品

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

【讨论】:

  • 我在一年半后阅读此答案并单击 upvote 并看到我自己编写了此答案的尴尬时刻。哈哈。 :D 对此的一个小补充:18 个月后,elasticsearch 已成为一个不错的选择,并且拥有一个不错的社区。酷,盆景酷!
  • 奥古斯都!那个尴尬的时刻:D。那么对于 python 网络应用程序,您认为现在最好的是什么?基于性能、内存使用和易于设置的 Solr 或弹性搜索?
  • 网络应用程序是用什么语言编写的并不重要。根据您的用例选择!
【解决方案4】:

我使用 Sphinx 已经快一年了,它非常棒。 我可以在我的 MacBook 上在一分钟内索引 150 万份文档,在服务器上甚至更快。我还使用 Sphinx 将搜索限制在特定纬度和经度内的地方,而且速度非常快。 此外,结果的排名方式是非常可调整的。 如果您阅读一两个教程,则易于安装和设置。 几乎是 1.0 的状态,但他们的候选发布版本坚如磐石。

【讨论】:

  • 可以在 Solr 中使用 LocalSolr 插件进行地理搜索:gissearch.com/localsolr
  • 您可以在一分钟内索引 150 万份文档吗?我什至无法接近阅读那么多 - 直接从我的 SSD 上的 7zip(不写入,输出到控制台)文件!现在是 2017 年!这些是什么文件?这太不可思议了。注意:我希望你不是指在一分钟内搜索 150 万的索引。对包含 150 万个文档的索引的搜索仍应在几秒钟内返回(即使在 2009 年)。
【解决方案5】:

Lucene / Solr 似乎更有特色,业务年限更长,用户社区也更强大。 恕我直言,如果您可以克服某些人似乎(不是我们)面临的初始设置问题,那么我会说 Lucene / Solr 是您最好的选择。

【讨论】:

  • 用户社区很重要。 Sphinx 论坛中有几个非常非常乐于助人的人,但除此之外没有强大的社区。​​span>
猜你喜欢
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-02
  • 1970-01-01
相关资源
最近更新 更多