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

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

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

ster wers

Логика моего приложения добавит нечеткое, но никогда не вернет Star Wars. Я пробовал:

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

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

Ответ 1

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

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

Поиск с запросом un-stemmed ('ster wers'):

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

Поиск с помощью запрошенного запроса ('ster wer'):

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

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

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

  • Чтобы сделать это, войдите в веб-консоль AWS и перейдите на Схемы анализа → Добавить схему анализа: enter image description here

  • Затем перейдите к параметрам индексирования и настройте свое поле, чтобы использовать новую схему анализа без вывода: enter image description here

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

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