Причина, по которой ваш запрос не работает, связана с происхождением 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
).
Как исправить:
Описанный вами вариант использования будет работать, если вы настроите схему анализа для рассматриваемого поля, чтобы не использовать какие-либо основы.
Для этого войдите в веб-консоль AWS и перейдите в раздел «Схемы анализа» --> «Добавить схему анализа»:
Затем перейдите в «Параметры индексирования» и настройте свое поле для использования новой схемы анализа без корневой основы:
Отправьте свои изменения и переиндексируйте.
Это решит вашу проблему, но, конечно, вы потеряете преимущества стемпинга. Вы не можете иметь свой торт и съесть его тоже.
person
alexroussos
schedule
27.04.2015