2012-12-26 61 views
2

我們計劃使用Django的草垛與So​​lr4.0(近實時搜索)就是我們的Web應用程序,我想知道如果任何人都可以使用草垛的限度告知。(與直接使用solr相比)。即使用django-haystack會有性能降低/開銷嗎?我們有大約300萬份+文件需要索引+每天增加額外(估計)10萬個文件。限值4.0

理想情況下,我認爲我們需要一個比Solr4更簡單的API - 但我發現很難找到任何特定於python的東西,它仍然被主動維護(除了django-haystack ofcourse)。我會很感激這方面的任何指導。

回答

0

這似乎是你的問題可以改寫「是如何草堆燒了嗎?」 Haystack對某些事情很好,但也讓我在工作中感到頭痛。以下是我必須編碼的一些事情。

你提到的索引。 Haystack具有重建索引的管理命令。我們將在測試過程中將這些用於核反應堆和重建,但對於重新編輯我們的產品內容,我們會碰壁。這個命令將永遠存在,你不知道它在進展方面是什麼,如果失敗了,你就會被搞砸,不得不重新開始。我們達到了一個內容過多的地步,它會失去足夠的可靠性。我們切換到批量的內容,並將其重新編入芹菜任務中。我們做了一個管理命令來執行批處理並啓動所有這些任務。這在面對部分失敗時更加穩健,甚至更好,它實際上完成了。底層任務將使用haystack調用將數據庫對象轉換爲solr文檔 - 此ORMiness很好,並且沒有燒燬我然而。不過,我們手動編輯我們的solr模式。

查詢API是好的簡單的東西。如果你正在做更復雜的solr查詢,你可以發現自己只是提供原始查詢。這可能會導致意大利麪代碼。我們最終將該原始意大利麪條推入solrconfig文件的請求處理程序中。我們仍然使用haystack來打開突出顯示或選擇特定的請求處理程序,但是當我們保持簡單並且我們根據需要添加了任意參數的方法時,我感到更高興。

有你想要如何使用Solr的,似乎在以代碼即可獲得出爐其他假設。 Haystack是唯一一個我對代碼有一定熟悉的開源項目。我不確定這是否是一件好事,因爲它並不總是被選擇。我們有大量的圖層代碼可以擴展草垛類,並覆蓋它做正確的事情。這並不可怕,但是當你不得不復制乾草堆代碼並將其粘貼到那些重寫的方法中時,它開始變得更加糟糕。

所以......它並不完美,但部分是得心應手。如果你正在編寫自己的API,那麼使用乾草堆可能會爲你節省一些麻煩,特別是當你想要把所有的solr結果傳遞迴django模板或其他東西時。這聽起來像是文件不斷涌入,無論如何你都會想寫一些批量索引作業。從這一點開始,準備好稍微燒一點,然後在發生這種情況時查看源代碼,它實際上非常易讀。