2012-01-24 151 views
3

我在網上看到幾個聲明,NHibernate(或Hibernate)搜索「照顧數據庫/索引同步」的效果。NHibernate Search會不會意識到底層數據的變化?

當我讀到這些語句時,我忍不住想知道是否存在隱含的「......只要您使用[N] Hibernate來訪問任何數據。」

我使用NHibernate作爲對由不同的應用程序完全擁有的數據庫的只讀數據訪問層

- 所以我的應用程序將永遠直接感知外部寫的。

Hibernate/NHibernate Search實際上是否會做任何事情來監視原始數據的變化,例如在設置查詢通知和/或在整個或部分索引中使用生存時間或「過期時間」?

還是Lucene索引隨着時間的推移逐漸變得更加穩定,因爲越來越多的行被外部應用程序改變了?

如果這個工具做這種同步的,那麼除了手動重新索引(這將是非常很難時間正確),有什麼事我可以做,以保持同步Lucene索引與數據庫,還是我最好只使用SQL Server中的Fulltext功能,因爲我一直在做這件事?

回答

1

我想我已經能夠從Hibernate Search Documentation推斷出答案:

Hibernate Search的將透明指數每一個實體持久化,更新或者通過Hibernate核心去除。但是,您必須爲數據庫中已存在的數據創建初始Lucene索引。

如果您必須然後創建一個初始指數按理說,你還必須更新索引,如果任何更改應用程序外進行。

很明顯,HS/NHS是而不是像SQL Server FTS,Oracle Text等那樣的一個即發即棄解決方案,除非幾乎所有數據寫入都是通過會話完成的。

+0

我還想補充一點,考慮到這個限制,以及NH Search的大量索引功能的痛苦缺乏(不像相對全功能的Java/Hibernate版本),我不認爲我會使用NH搜索一個傳統的數據庫,並且在將其用於可能需要互操作的生產應用程序中之前會考慮很長時間。 – Aaronaught

+0

無賴。就像你我希望HS可以自動更新索引... –