Достигните функциональности, такой как анализатор снежного кома через нормализатор по типу ключевого слова - ELASTICSEARCH 5.6

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

Изначально я пытался настроить анализатор на своем поле, просто чтобы обнаружить, что поля типа keyword не может иметь анализаторы, но нормализаторы. Итак, я попытался установить нормализатор для snowball на этих полях, но кажется, что мой нормализатор не позволяет snowball фильтр (возможно, нормализаторы не поддерживают снежный фильтр)

Я не могу изменить тип поля. Я хочу добиться функциональности, например, если мой вводимый текст соответствует ресторанам, он должен обрабатывать его так же, как restaurant и дать результаты, чтобы мне не нужно было добавлять рестораны в качестве ключевого слова в это поле.

Можем ли мы добиться этого с помощью нормализаторов? Я прошел через упругую документацию и различные посты, но понятия не имел. Ниже я попытался установить нормализатор с ответом от моего эластичного сервера.

PUT localhost: 9200 / db110 / _settings

{
  "analysis": {
    "normalizer": {
      "snowball_normalizer": {
        "filter": ["lowercase","snowball" ]
      }
    },
    "filter" : {
        "snow" : {
            "type" : "snowball",
            "language" : "English"
        }
    }
  }

}

отклик

{
    "error": {
        "root_cause": [
            {
                "type": "illegal_argument_exception",
                "reason": "Custom normalizer [snowball_normalizer] may not use filter [snowball]"
            }
        ],
        "type": "illegal_argument_exception",
        "reason": "Custom normalizer [snowball_normalizer] may not use filter [snowball]"
    },
    "status": 400
}

1 ответ

Ты не можешь сделать это! Снежный ком - это стеммер, и он используется для полнотекстового поиска, например, типа данных текста, потому что это фильтр токенов, который манипулирует каждым токеном. С ключевым словом datatype вы создаете единый токен для всего содержимого поля. Как, по вашему мнению, может работать стеммер для поля ключевых слов? Использовать стеммер без токенов не имеет смысла. Нормализатор для полей ключевых слов только в нижнем регистре и asciifolding. Документация: https://www.elastic.co/guide/en/elasticsearch/reference/current/normalizer.html

Другие вопросы по тегам