2013-10-12 50 views
2

我只是想知道乾草堆提供的功能以及我是否需要它。Django搜索Whoosh但沒有Haystack?

我的意思是搜索和索引是由whoosh完成的。據我所知,乾草堆只是提供現成的意見和形式。如果我想寫我自己的形式和意見,我還需要乾草堆嗎? 我錯過了什麼嗎?

P.S.我不打算使用除whoosh之外的任何其他搜索引擎,所以我也不需要乾草堆的多個搜索引擎封裝。

回答

2

除了視圖,表單和搜索引擎無關層之外,關於Haystack的另一個強大的功能是它能夠將Django模型映射到搜索索引理解的內容。使用Haystack,您可以輕鬆指定模型中的哪些字段應該編入索引以及如何編寫(請參閱SearchIndex API - http://django-haystack.readthedocs.org/en/latest/searchindex_api.html)。

完成之後,您可以利用內置的管理命令在需要時(重新)索引數據。

它還附帶了一些漂亮的模板標籤來幫助顯示搜索結果,例如突出顯示匹配位。

有沒有特別的原因,你不想使用Haystack?這是一個非侵入式的插件,可以讓您儘可能多地使用它,並且可以在後續需要時使用更高級的功能。在我建立的其中一個網站中,我只使用了SearchIndex和SearchQuerySet API;我建立了自己的觀點和形式。最終,如果你最終編寫自己的索引和搜索代碼,視圖和表單,你基本上已經重新編寫了Haystack的一大部分,在這種情況下,你可能想要考慮使用那些已經在使用並且相當好的東西測試。

也就是說,我在另一個項目中推出了自己的'Haystack'層,主要是因爲數據源沒有映射到Django ORM。在這種情況下,我編寫了自己的索引腳本,並使用PySolr與我的Apache Solr實例進行交互。

鑑於Whoosh是用Python編寫的,我認爲它有一個像樣的Python界面,所以它不應該太難。我只會在你的場景有特別的情況下做到這一點。

+0

我看了一下Whoosh,我會直接使用它。這很簡單,我喜歡控制:) –

+0

有些服務不支持Haystack,例如「Pythonanywhere」。在這種情況下,直接使用Whoosh將是唯一的解決方案,除非用戶願意更改服務。 –