Какой 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"
    }
}'
Другие вопросы по тегам