Проблема: мне нужно выделить подходящие термины. Готовое решение не может быть применено из-за того, что мы не храним источники внутри ES.
Возможное решение:
- Получение идентификаторов из ES по поисковому запросу
- Извлечение источников по идентификаторам
- Сопоставление источника со словом запроса по слову с использованием алгоритма LevinsteinDistance или класса FSM Lucene
Учитывая, что мы не получаем много контента на время не должно занимать много времени.
Вопрос в следующем:
Содержит ли библиотека Lucene FSM / автоматы для представления словаря? Желаемое решение: получить автомат lucene, представляющий словарь, и подать запрос к нему термин за термином. Автоматы должны принимать термины, содержащиеся в словаре. Редактировать расстояние также следует учитывать.
В поисках решения я нашел классы люценов, такие как LevenshteinAutomata и FuzzyQuery. Но LevenshteinAutomata (как я понял) представляет собой только один термин. Поэтому на несколько сроков мне нужно несколько автоматов.