2016-11-09 29 views
0

我們計劃在一個項目中使用帶有Lucene的Hibernate Search,最終必須替換當前運行的應用程序。 Hibernate搜索本身工作得很好,但我對索引有一些疑問。我們的數據庫中有很多遺留數據,數據庫工作人員在後臺更改和添加數據,以及計劃在一段時間內與新應用程序並行運行的舊應用程序。如果只是關於遺留數據,我可以在程序的第一次啓動時運行一次索引,但也可以通過舊應用程序和數據庫工作人員執行更改,我需要有一個後臺幫助程序來更新索引定期進行。有沒有一種方法能夠以令人滿意的表現完成這個任務?Hibernate Search:用於索引的背景助手

回答

0

我自己也有類似的情況,我們的解決方案是安排一個夜間工作,它將運行索引重建。我不得不花費一些時間來確保重建過程足夠快,這可能需要一些研究並使Hibernate的二級緩存適用於某些熱門實體和關鍵關係。

當然這種方法只有在你的應用程序可以容忍工作在略微不同步索引直到夜幕降臨時纔有效。

其他人一直在使用JMS上的主/從配置,這樣一個單一節點(主節點)就會每天更新一次索引:您可以指定哪些實體需要重建索引,以便您可以能夠將這些行爲限制在關鍵表格上,或者僅限於那些由舊版應用程序實際觸及的行爲。

通常,這樣的「主」節點只會重建索引併爲從屬服務器進行索引刷新,而Web請求將由從屬服務器提供服務,這樣可以在不影響Web服務器性能的情況下抑制主服務器上的開銷。不要忘記調整主節點上的並行和連接池,以便它不會給數據庫帶來太多負載:在這種情況下,不要調整它以儘快完成,您更願意它工作得更慢。