2010-07-12 69 views
24

我正在开发一个Django项目,我需要实现全文搜索。我看到了SOLR,并发现了一些相同的好评。但是,它在Java中实现并需要将Java环境与Python一起安装在系统上。寻找与SOLR相当的python,我看到了Whoosh,但我不确定Whoosh是否与SOLR一样高效和强大。或者我应该只使用SOLR选项,还是比使用Python的Whoosh和SOLR有更好的选择?全文搜索:飞快与V SOLR

请建议。

在此先感谢

+4

看一看Django的干草堆。它提供了solr,woosh,xapian和其他一些搜索引擎之上的抽象层。随着干草堆,你可以开始尝试使用woosh,然后切换到更快和/或更强大的引擎,而不需要太多的代码更改 – 2010-07-12 11:20:12

回答

11

飞快移动实际上是非常快速的python只实现。也就是说,它至少还要慢一个数量级。根据您需要索引和搜索的数据量以及最大允许延迟和并发搜索的要求,它可能不是一个选项。

SOLR是一个复杂的野兽,但它是迄今为止最全面的搜索解决方案。将其与solrpy混合以获得令人惊叹的效果。是的,你将需要Java托管。您可能还想查看python bindings for xapian。 Xapian速度非常快,但是比SOLR少了一个完整的解决方案。他们是GPL许可的,所以可能/不可能适合你。

+8

和“Whoosh!”只是听起来比其他人凉爽) – drxzcl 2010-07-12 09:48:57

+1

是的,对我来说,关注的是性能和易用性。 – 2010-07-12 10:40:09

+2

如果您可以部署本机模块并且没有GPL代码问题,我会认真评估xapian。它快速简单。 SOLR很快但并不容易,Whoosh!很简单,但速度不快。 – drxzcl 2010-07-12 11:42:21

1

我已经使用Lucene和Lucene扩展,比如SOLR和Nutch,并且我发现lucene几乎满足我需要的东西。我只尝试过一次,但选择了Lucene,因为 1)我正在使用Java 2)我很难让UTF-8与Whoosh一起工作(不知道它现在是否可以使用)。在Lucene中,我用汉字处理没有问题。

如果您使用Python作为您的编程语言,并且Whoosh满足您的需求,那么我建议您将它用于Java替代品,以便更好地集成,避免外部依赖性,如果需要编写附加功能则可以更快地进行自定义。

更新:如果您有兴趣使用Lucene的,它有一个Python包装:见http://lucene.apache.org/pylucene/

+0

谢谢你的回复曼尼。然而,我很想知道在python中是否还有类似Lucene的东西? – 2010-07-12 11:20:53

+0

是的,但是它不是从Java到Python的端口,但它是Lucene的Python包装器。请参阅http://lucene.apache.org/pylucene/ – Manny 2010-07-12 11:33:51

+2

顺便说一句,我发现使用SOLR(使用solrpy或RESTful接口)与Python进行交谈比直接使用lucene绑定更容易。因人而异。 – drxzcl 2010-07-12 11:43:36