【问题标题】:Full text search: Whoosh Vs SOLR全文搜索:Whoosh Vs SOLR
【发布时间】:2011-03-14 16:27:27
【问题描述】:

我正在开发一个 Django 项目,我需要在其中实现全文搜索。我看过 SOLR 并找到了一些很好的 cmets。但是由于它是在 Java 中实现的,并且需要将 Java 环境与 Python 一起安装在系统上。在寻找 SOLR 的 python 等效项时,我见过 Whoosh,但我不确定 Whoosh 是否与 SOLR 一样高效和强大。或者我应该只使用 SOLR 选项还是有比 Whoosh 和 SOLR 与 python 更好的选项?

请提出建议。

提前致谢

【问题讨论】:

  • 看看 django-haystack。它在 solr、woosh、xapian 和其他几个搜索引擎之上提供了一个抽象层。使用 haystack,您可以开始尝试使用 woosh,然后切换到更快和/或更强大的引擎,而无需太多代码更改

标签: python django solr


【解决方案1】:

Whoosh 对于纯 Python 实现来说实际上非常快。也就是说,它仍然至少慢了一个数量级。根据您需要索引和搜索的数据量以及对最大允许延迟和并发搜索的要求,它可能不是一个选项。

SOLR 有点复杂,但它是迄今为止最全面的搜索解决方案。将它与solrpy 混合使用以获得惊人的效果。是的,您将需要 java 托管。

您可能还想查看python bindings for xapian。 Xapian 非常非常快,但不如 SOLR 是一个完整的解决方案。虽然它们是 GPL 许可的,所以这可能/可能不适合您。

【讨论】:

  • 是的,对我来说,关注的是性能和易于实施。
  • 如果您可以部署原生模块并且对 GPL 代码没有任何问题,我会认真评估 xapian。它又快又容易。 SOLR 快但不容易,嗖!简单但不快速。
  • 嗖嗖嗖嗖,2014 年还不错,在 SSD 上 STORAGE='file' 时速度实际上相当快,而 STORAGE='ram' 时速度快。 Xapian 似乎不能很好地与 haystack 配合使用,不得不迅速切换到 Whoosh,因为用户抱怨太多。
  • 2016 年更新:Xapian 运行良好,在 SSD 上它是我迄今为止使用过的最快的搜索。
【解决方案2】:

我使用过 Lucene 和 Lucene 扩展,如 SOLR 和 Nutch,我发现 lucene 几乎可以满足我的需求。我只尝试过 Whoosh 一次,但选择了 Lucene,因为 1)我正在使用Java 2) 我在使 UTF-8 与 Whoosh 一起工作时遇到了麻烦(不确定它现在是否可以开箱即用)。在 Lucene 中,我可以毫无困难地处理汉字。

如果您使用 Python 作为您的编程语言并且 Whoosh 满足您的需求,那么我建议您使用它而不是 Java 替代品,以便更好地集成、避免外部依赖、如果您需要编写额外的功能,可以更快地进行定制。

更新:如果您对使用 Lucene 感兴趣,它有一个 Python 包装器:请参阅 http://lucene.apache.org/pylucene/

【讨论】:

  • 感谢您的回复曼尼。但是,我很想知道 python 中是否也有类似 Lucene 的东西?
  • 是的,但是它不是从 Java 到 Python 的移植,而是 Lucene 的 Python 包装器。见lucene.apache.org/pylucene
  • 顺便说一句,我发现让 python 与 SOLR 对话(使用 solrpy 或 RESTful 接口)比直接使用 lucene 绑定要容易得多。 YMMV。
猜你喜欢
  • 1970-01-01
  • 2011-10-07
  • 2012-03-17
  • 1970-01-01
  • 2014-12-16
  • 2018-04-24
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
相关资源
最近更新 更多