У меня есть сложный запрос, который требует полнотекстового поиска по некоторым полям и основным ограничениям для других полей. Hibernate Документация поиска strongly advises against добавление ограничений на запрос базы данных для полнотекстового поискового запроса и вместо этого recommends помещение всех необходимых полей в полнотекстовый индекс. Проблема, с которой я сталкиваюсь, заключается в том, что другие поля нестабильны; значения могут меняться каждую минуту или около того, и эти обновления в базе данных могут происходить за пределами JVM, выполняющего поиск, поэтому существует высокая вероятность того, что локальный индекс Lucene будет устаревшим по отношению к этим полям.Слияние Hibernate Результаты поиска с реляционной базой данных
Ищите рекомендации по стратегии здесь. Самое лучшее, что я придумал до сих пор, - это объединить результаты вручную, сначала выполнив запрос базы данных (выборка только идентификаторов объектов), а затем выполните полный текстовый поиск. и как-то эффективно фильтровать результаты Lucene по набору идентификаторов объектов из базы данных. Конечно, я не знаю, сколько результатов я получу от каждого отдельного запроса, поэтому я беспокоюсь о производительности и памяти. Это может быть десятки тысяч строк за штуку в худшем случае.