192

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

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

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

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

我的问题:

  • 他们如何比较?
  • 我错过了任何替代方案吗?
  • 我知道每个用例都是不同的,但在某些情况下我绝对不想使用某个包吗?
4

5 回答 5

326

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

相似之处:

以下是一些区别:

相关问题:

于 2009-08-19T02:32:46.067 回答
49

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

狮身人面像优势:

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

Solr 优势:

  1. 可以延长。
  2. 可以直接从网络应用程序中点击它,即,您可以通过 AJAX 直接让类似自动完成的搜索点击 Solr 服务器。
于 2009-08-16T13:11:25.383 回答
21

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

所以,回答这个问题:

哪个和为什么?

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

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

备择方案

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

于 2011-05-29T07:56:04.237 回答
19

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

于 2009-08-16T13:21:22.540 回答
2

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

于 2010-12-13T04:57:36.220 回答