Узнает ли когда-нибудь NHibernate Search об изменениях базовых данных?

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

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

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

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

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

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


person Aaronaught    schedule 24.01.2012    source источник


Ответы (1)


Я думаю, что смог вывести ответ из Документация по поиску в спящем режиме:

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

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

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

person Aaronaught    schedule 25.01.2012
comment
Я бы также добавил, что, учитывая это ограничение, наряду с досадным отсутствием возможности массового индексирования в NH Search (в отличие от относительно полнофункциональной версии Java/Hibernate), я не думаю, что когда-либо буду использовать поиск NH с устаревшей базой данных. и будет долго и упорно думать, прежде чем использовать его в производственном приложении, которому может потребоваться взаимодействие. - person Aaronaught; 25.01.2012