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

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

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

我发现的具有以下特性的替代品是:

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

我的问题是:

  • 他们比较起来怎么样?
  • 我错过了什么选择吗?
  • 我知道每个用例是不同的,但是在某些情况下,我肯定 没有想要使用某个特定的包吗?
56947 次浏览

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

狮身人面像的优势:

  1. 开发和设置速度更快
  2. 更好(更快)的聚合,这是我们的杀手级特性。
  3. 不是 XML。这就是我们最终排除 Solr 的原因。由于缺乏 Solr 聚合,我们必须返回相当大的结果集(想想成百上千个结果) ,然后自己对它们进行聚合。在 XML 之间序列化和从 XML 序列化所花费的时间完全扼杀了性能。但是对于小的结果集,它完全没有问题。
  4. 我在开源应用程序中见过的最好的文档

太阳能优势:

  1. 可以延长。
  2. 可以直接从网络应用程序打它,也就是说,你可以让类似自动完成的搜索直接通过 AJAX 打到 Solr 服务器。

我使用狮身人面像已经快一年了,它非常神奇。 我可以在一分钟内在我的 MacBook 上索引150万份文档,在服务器上更快。我也使用 Sphinx 来限制搜索特定经纬度范围内的地方,它非常快。 此外,如何排列结果是非常可调整的。 易于安装和设置,如果你阅读一两个教程。 几乎是1.0的状态,但是他们的候选发布版本已经非常稳固了。

我已经成功地使用 Solr 将近两年了,从来没有使用过 Sphinx,所以我显然是有偏见的。 不过,我会尽量引用文件或其他人的话来保持客观。我还要补充一下我的回答: -)

相似之处:

这里有一些不同之处:

相关问题:

Lucene/Solr 似乎功能更加强大,业务年限更长,用户社区也更加强大。 如果你可以通过一些似乎已经面临的初始设置问题(不是我们) ,那么我会说 Lucene/Solr 是你最好的选择。

注意: 很多用户都有同样的疑问。

所以,回答这个问题:

为什么

  • 使用 太阳如果你打算使用它在你的网络应用程序(例如网站搜索引擎)。由于它的 API,它肯定会变得非常棒。对于一个网络应用程序来说,你肯定需要这种能力。

  • 如果您想快速地搜索大量的文档/文件,可以使用 狮身人面像。它的指数也很快。我建议不要在涉及 JSON 或解析 XML 以获得搜索结果的应用程序中使用它。用它进行直接 dB 搜索。它在 MySQL 上运行得很好。

替代品

虽然这些是巨人,但还有很多。此外,还有一些公司使用这些软件为自定义框架提供动力。所以,我想说你真的没有错过任何一个。尽管有一个 弹性搜索拥有良好的用户基础。