Нечеткий поиск Lucene по всему тексту

java search lucene full-text-search fuzzy-search

479 просмотра

1 ответ

В Lucene я могу использовать нечеткий поиск, чтобы получить «похожие» результаты.

Например, следующий запрос:

text:awesome~0.8

Найдет документы, содержащие 80% похожих текстов, например «awesom».

У меня вопрос, могу ли я использовать нечеткий поиск по всему тексту (несколько слов)?

Например, я хочу найти 80% текстов, похожих на следующий текст:

это мой текст с несколькими словами

Помещение нечеткой фразы в каждое слово не даст мне желаемых результатов:

text:(+this~0.8 +is~0.8 +my~0.8 +text~0.8 +with~0.8 +multiple~0.8 +words~0.8)

Поскольку он будет возвращать только те документы, в которых все слова (или 80% похожих слов против каждого слова) указаны в запросе.

Я ожидаю, что запрос выдаст мне результаты, где вся строка похожа на 80% (даже если в ней нет целого слова), например:

это текст с несколькими словами

Что-то вроде этого -

text:(+this +is +my +text +with +multiple +words)~0.8

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

Я счастлив использовать Java API классы для этой цели, так как мне нужно использовать его в Java-программе.

Автор: keeping_it_simple Источник Размещён: 30.10.2019 07:34

Ответы (1)


1 плюс

Я не уверен, что плавающее сходство для нечеткого запроса больше разрешено в Lucene. Начиная с lucene-4.0 и более поздних версий, FuzzyQuery поддерживает максимальное расстояние редактирования 2.

Предположим, вы хотите изменить расстояние 2. Вы можете использовать Keyword Analyzer при индексации поля. Это не будет маркировать значения вашего поля. При поиске вы можете использовать FuzzyQuery с термином, содержащим полный текст.

Ограничения этого решения:

  • Максимальное расстояние редактирования - 2.
  • Мы предполагаем, что все, что вы ищете, является полной ценностью этого поля. Например, если вы проиндексировали значение «это мой текст», вы не сможете получить документ, если выполните поиск с помощью «это - нью » [допустил ошибку в запросе]. Вы можете получить этот документ , если вы запрашиваете его как «это пу текст».
Автор: Dhaval Размещён: 29.04.2016 05:45
Вопросы из категории :
32x32