技術版本:
Hibernate Search的問題
Hibernate 3.6.5
Hibernate Search 3.4.0
Lucene (lucene-core-*.jar) 3.1.0
Spring 3.1.0.M2
休眠(搜索)配置:
<prop key="hibernate.search.default.indexBase">/some/dir</prop>
<prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.FSDirectoryProvider</prop>
<prop key="hibernate.search.default.locking_strategy">native</prop>
<prop key="hibernate.search.default.exclusive_index_use">false</prop>
問題:
我們的應用程序部署在亞馬遜(AWS雲),但我們已經在我們的本地集羣面臨這個問題,以及:
應用程序的設計是這樣的:有是從內部的主催生了Thread
( Web)應用程序,我們需要更新索引的實體。基本上它就像一個狀態監視器線程,它讀取.status文件並每30秒左右更新一次數據庫。這種情況平均持續10分鐘到1/2小時左右。 我們看到的問題是:每隔幾天我們需要重新生成索引,因爲Hibernate Search會停止爲所討論的實體(上面討論的那個)返回任何內容。
我經歷了幾個論壇,似乎建議只有一個線程應該更新Lucene索引。但是,索引編寫也是線程安全的。所以,即使多個線程正在寫入相同的索引,我仍然認爲它不應該導致問題(在搜索中沒有返回任何內容)。也就是說,我可能會得到有問題的實體的陳舊狀態,但仍然應該返回的東西。
我們使用Hibernate Search的默認IndexReader/Writer實現。
任何幫助將不勝感激。謝謝。
你應該在使用NFS你的問題,這對Hibernate Search的參考手冊,明確鼓勵,因爲鎖的問題指出。如果您需要實時更新,請使用Infinispan目錄,或按照記錄設置JMS主/從方法。您也可以使用Amazon隊列服務編寫後端。 – Sanne