2010-07-12 67 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