Узнает ли когда-нибудь NHibernate Search об изменениях в базовых данных? - PullRequest
3 голосов
/ 24 января 2012

Я видел несколько онлайн-заявлений о том, что NHibernate (или Hibernate) Search "заботится о синхронизации базы данных / индекса".

Когда я читаю эти утверждения, я не могу не задаться вопросом, есть ли подразумеваемое "... пока вы используете [N] Hibernate для любого доступа ко всем данным."

Я использую NHibernate в качестве слоя доступа только для чтения к базе данных, полностью принадлежащей другому приложению, поэтому мое приложение никогда не будет напрямую осведомлено о внешних записях.

Действительно ли Hibernate / NHibernate Search что-то делает для отслеживания изменений необработанных данных, например, при настройке уведомления о запросе и / или использовании срока действия или "истечения срока действия" для полных или частичных индексов?

Или индекс Lucene будет постепенно прогрессировать со временем, так как все больше и больше строк изменяются внешними приложениями?

Если этот инструмент не не выполняет такую ​​синхронизацию, кроме ручной переиндексации (которая была бы очень трудной для правильного определения времени), есть ли что-нибудь еще, что я могу сделать чтобы синхронизировать индекс Lucene с базой данных, или мне лучше просто использовать возможности полнотекста в SQL Server, как я делал до этого момента?

1 Ответ

1 голос
/ 25 января 2012

Я думаю, что смог найти ответ из Документация поиска Hibernate :

Hibernate Search будет прозрачно индексировать каждую сущность, сохраненную, обновленную или удаленную через Hibernate Core. Однако вы должны создать начальный индекс Lucene для данных, уже присутствующих в вашей базе данных.

Если вам нужно создать начальный индекс, то, разумеется, вам также придется обновить этот индекс, если какие-либо изменения будут внесены за пределы приложения.

Очевидно, что HS / NHS - это , а не - решение, позволяющее забыть о проблемах, такое как SQL Server FTS, Oracle Text и т. Д., Если почти все записи данных не выполняются в ходе сеанса.

...