2011-08-10 130 views
3

我知道有幾個類似於這個問題,但他們沒有提供一個簡單的答案手頭的問題。對不起,如果你覺得這是重複的,但我認爲清晰易懂的答案會讓很多人受益。所以,這個問題。Solr「實時」索引

Solr索引更新是否可以自動執行?如果可以的話,那麼最好的方法是什麼?

下面是一個簡單的使用情況,以澄清一個問題:我有一個數據庫表與不同種類的數據的多個列。有一個Web應用程序用於管理數據。我有單獨的Solr服務器來索引上述表中的指定列。我怎麼能達到這樣的結果,當用戶添加,刪除或修改表中的數據時,Solr會注意到已更改並修改索引。

它有必要是「實時」。這意味着幾秒鐘後將發生變化。當然,大量的數據可能會更多。

在此先感謝

回答

6

這裏有兩個問題:

能Solr的索引更新是自動的?

是的,他們可以,而且應該總是自動化。您不想爲每個更改手動啓動索引過程。

,有必要爲它是「實時」。

我已經提到了一些方法來減少更改數據和更新索引in this answer之間的延遲。您可以使用autoCommit來確保您的數據在更新x秒內提交。根據時間間隔的不同,您需要減少自動設置和調整其他設置,詳情請參閱this

而且保持對NRT wiki page的眼睛相關的信息和對本解決方案。

+0

感謝明確的答案和鏈接到更多的資源。我將深入調查這些信息,以瞭解它如何在我的方案中實施。 – frustrated

+0

我還有一個關於「實時」部分的問題。在您的第一個鏈接中,您指出可以使用ORM等功能來觸發索引。我爲此使用Solr API,因此它看起來是最佳選擇。 基本上data-config.xml定義了我的來自db的表格數據是一個文檔,每一行都是一個實體。我可以對實體級別的索引執行更新嗎?我記得只有在文檔層面纔有可能。 – frustrated

+0

@frustrated:我認爲你不能混合DIH和ORM事件。 –

2

你可能想看看Apache Solr實現3.3 RankingAlgorithm 1.2。它支持NRT(近實時索引),可以更新10,000文檔/秒。您可以在更新期間同時進行搜索。您不需要提交或關閉搜索器。你可以在這裏與RankingAlgorithm獲取更多有關NRT使用Solr 3.3:

http://solr-ra.tgels.org/wiki/en/Near_Real_Time_Search_ver_3.x