2017-07-14 120 views
0

與其他兩名學生一起,我們正在開發一個項目。該體系結構如下:Hibernate搜索,從遠程服務更新索引

  • java服務,使用網絡爬蟲獲取網站上的信息並將結果存儲在自己的數據庫中。我們沒有在這個項目上使用Hibernate。

  • 一個J2E網站,使用maven /春/休眠(代碼第一)

有預定任務,我們將在網絡爬蟲數據庫的網站數據庫中的結果。

當然,我們希望在網站上對此結果進行快速調查!所以我在考慮使用HibernateSearch,這似乎是一個了不起的工具!我不知道我可以在我的情況下使用它:據我所知,Hibernate-search更新(hibernate)事務的索引,並且由於插入不是通過hiberate完成的,想知道它是否仍然可以工作(hibernate是否會注意到數據庫事務?),如果不是,如果有任何技巧來強制更新的服務!

注:我知道有創建索引的指令:

FullTextSession fullTextSession = Search.getFullTextSession(session); 
fullTextSession.createIndexer().startAndWait() 

,但我真的不希望刪除/每次創建索引我做我的插入。

回答

3

Hibernate Search不能偵聽來自數據庫的內部事件,它只能在您使用Hibernate ORM執行你的insers時自動更新索引。

一些類似情況下的Hibernate Search用戶會定期觸發MassIndexer(例如每晚)。根據您的使用情況,這可能沒什麼問題,例如,如果您的網絡應用程序是網上商店,那麼人們通常可以在搜索結果中顯示新內容,但插入內容後會延遲一段時間。

如果不爲您的使用情況下工作,你有兩個選擇:

  • 讓你插入交易中使用Hibernate ORM
  • 產生的事件Hibernate Search的手動

一通過Hibernate ORM加載新元素,然後調用FullTextSession.index(entity)來執行「手動」索引。

+0

謝謝你的回答:)觸發MassIndexer是我最簡單的方法! –