Hibernate Поиск вопроса - PullRequest
       8

Hibernate Поиск вопроса

1 голос
/ 02 декабря 2009

Я использую Hibernate Search и применил индексирование Lucene к одной таблице для объекта домена. Теперь я хочу сделать выбор из этой таблицы для объектов домена и применить фильтрацию на основе объединения с другой таблицей, которая не проиндексирована.

Например, у меня есть таблица лотов аукциона, которую я проиндексировал. И у меня есть таблица котировок. Цитаты имеют ссылки на лоты аукциона.

Я хочу провести полный тестовый поиск в таблице AuctionLots и вернуть совпадающие сущности без кавычек. В обычном SQL это достигается с помощью JOIN.

Но в ситуации с HibernateSearch мне нужно выполнить полный тестовый поиск, чтобы получить объекты домена, но я не знаю, как выполнить фильтрацию с JOIN.

У кого-нибудь есть идеи, как это сделать?

Ответы [ 2 ]

2 голосов
/ 02 декабря 2009

Я не рекомендую фильтровать при создании индексов для вашего поиска. Главным образом потому, что, насколько я знаю, он не поддерживается Hibernate Search, но также потому, что это не имеет смысла. По моему мнению, вам следует индексировать объект, который вы хотите найти, включая отношения с дочерними объектами. Я предполагаю, что ваш объект ActionLot имеет отношение один-ко-многим с вашими объектами Quotes. С аннотацией @IndexEmbedded вы можете пометить ваши цитаты как объекты, которые также должны быть проиндексированы. Когда вы ищете ActionLots без кавычек, вы можете отфильтровать это во время поиска, используя ограничения в поисковом запросе или применяя глобальный фильтр к вашему поиску. Это можно сделать с помощью параметров фильтра , предоставляемых Hibernate Search.

1 голос
/ 03 декабря 2009

Использование @IndexEmbedded или ClassBridge, безусловно, правильный подход. Также изменение данных не должно вызывать проблем. Вот для чего нужна автоматическая индексация. Вам не нужно переиндексировать все данные каждый раз, когда изменяется предложение. Использование автоматической индексации обеспечит повторную индексацию только добавленных / обновленных данных. Примечание: если вы хотите, чтобы индекс для экземпляра ActionLot обновлялся при изменении связанной цитаты, необходимо иметь двунаправленное отношение и использовать @ ConstainedIn

- Hardy

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...