Какой Elasticsearch Analyzer использовать для этого подсказки завершения?
Я очень плохо знаком с Elasticsearch и в настоящее время пытаюсь разобраться с анализаторами в отношении completion suggester
У меня есть список таких мест:
- Лондон
- London Eye
- Лондонская темница
- так далее...
Установив сопоставление для подсказки завершения следующим образом:
'place_suggest': {
'type': 'completion',
'payloads': true,
'index_analyzer' : 'stop',
'search_analyzer' : 'stop',
'preserve_position_increments' : false
}
Теперь я могу вернуть все три вышеупомянутых предложения, когда ввод текста подсказки представляет собой просто букву L
Однако я хотел бы The London Eye
возвращается, когда пользователь вводит слово eye
и аналогично иметь The London Dungeon
возвращается, когда пользователь вводит Dungeon
(И, конечно, для любых префиксов этих терминов)
Я играл с различными анализаторами и настройками для большей части сегодняшнего дня без успеха.
Какой анализатор мне нужно использовать для достижения вышеуказанного?
1 ответ
Вы можете достичь того, что вы хотите с Completion Предложение. Используйте несколько полей ввода и один унифицированный выход. Если есть совпадение в одном из полей ввода, будет возвращено поле вывода.
curl -X PUT localhost:9200/places/place/1 -d '
{
"title" : "The London Eye",
"place_suggest" : {
"input" : [
"The London Eye",
"Eye"
],
"output":"The London Eye"
}
}'
curl -X PUT localhost:9200/places/place/2 -d '
{
"title" : "The London Dungeon",
"place_suggest" : {
"input" : [
"The London Dungeon",
"Dungeon"
],
"output":"The London Dungeon"
}
}'