Как настроить поиск /lucene, используя преобразователь конечного состояния, чтобы ускорить поиск по типу / подсказчику

Я пытаюсь построить поиск с опережением по следующим данным.

    ID DATA STRING
    id_1 "это строка номер один"
    id_2 "это строка номер два"

При запросе этих данных я приведу строку вроде:

    "строка первая" -> вывод: id_1 (идентификатор совпадающей строки)
    "две строки" -> вывод: id_2
    "это номер строки" -> вывод id_1 id_2 (несколько результатов)

Я пытался с инвертированным индексом, с n-граммами (префиксами), для каждого токена в строке данных. Но для большого набора данных индексирование n-грамм является медленным (запросы достаточно хороши). Теперь у меня возникло некоторое представление о том, что в lucene есть классы Suggester, которые очень быстры в поиске по типу и используют FST (Finite State Transducer) для реализации быстрого поиска по префиксу.

Как можно использовать FST в моем сценарии, чтобы ускорить поиск по типу?

0 ответов

Другие вопросы по тегам