Cloudsearch Нечеткие термины и фразы

Я пытаюсь понять, как работает нечеткий поиск в AWS CloudSearch.

Я хочу найти "Звездные войны", но в моем поиске я набираю это по буквам

ster wers

Логика моего приложения добавит нечеткости, но никогда не вернет «Звездные войны». Я пытался:

ster~1 wers~1
"ster wers"~2
"ster"~1 "wers"~1

Что мне здесь не хватает?


person dmo    schedule 31.03.2015    source источник


Ответы (1)


Причина, по которой ваш запрос не работает, связана с происхождением CloudSearch. Если ваше поле проиндексировано со схемой анализа, установленной на English, то wars будет сохранено в форме основы как war.

Вот небольшая демонстрация того, как поиск корней влияет на ваш запрос.

Поиск с запросом без основы ("ster wers"):

Для поиска с помощью запроса без основы требуется, чтобы вы сопоставили wers с war, что отличается на 2 символа, и требует этого запроса: q=ster~1+wers~2.

Поиск по основанию запроса ("ster wer"):

Поиск по основанию означает, что вы сопоставляете wer с war и ошибаетесь всего на 1 символ. Таким образом, ster~1 wer~1 получит желаемый результат (т.е. соответствует star wars).

Как исправить:

Описанный вами вариант использования будет работать, если вы настроите схему анализа для рассматриваемого поля, чтобы не использовать какие-либо основы.

  1. Для этого войдите в веб-консоль AWS и перейдите в раздел «Схемы анализа» --> «Добавить схему анализа»: введите описание изображения здесь.

  2. Затем перейдите в «Параметры индексирования» и настройте свое поле для использования новой схемы анализа без корневой основы: введите описание изображения здесь

  3. Отправьте свои изменения и переиндексируйте.

Это решит вашу проблему, но, конечно, вы потеряете преимущества стемпинга. Вы не можете иметь свой торт и съесть его тоже.

person alexroussos    schedule 27.04.2015