Подтвердить что ты не робот

Анализаторы в elasticsearch

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

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

4b9b3361

Ответ 1

Позвольте мне дать вам короткий ответ.

Анализатор используется в индексе Time и во время поиска. Он использовал для создания индекса терминов.

Чтобы индексировать фразу, было бы полезно разбить ее словами. Приходит анализатор.

Он применяется к токенизаторам и фильтрам токенов. Токенизатор может быть токенизатором Whitespace. Он разбивал фразу в токенах в каждом пространстве. Шестнадцатеричный токенизатор разделяет фразу в каждой букве без буквы и в нижнем регистре.

Фильтр токенов используется для фильтрации или преобразования некоторых токенов. Например, сгибающий фильтр ASCII будет преобразовывать символы типа ê, é, è в e.

Анализатор представляет собой смесь всего этого.

Вы должны прочитать Руководство по анализу и посмотреть на все возможные варианты.

По умолчанию Elasticsearch применяет стандартный анализатор. Он удалит все распространенные английские слова (и многие другие фильтры).

Вы также можете использовать Analyze Api, чтобы понять, как это работает. Очень полезно.

Ответ 2

В Lucene, anayzer представляет собой комбинацию токенизатора (сплиттера) + штокмер + фильтр секундомера

В ElasticSearch анализатор представляет собой комбинацию

  • Символьный фильтр: "убирать" строку до того, как она будет tokenize. Пример: удалить html-теги
  • Tokenizer: ДОЛЖЕН иметь один токенизатор. Он использовал, чтобы разбить строку на отдельные термины или жетоны.
  • Фильтр токена: изменение, добавление или удаление токенов. Stemmer - это токен-фильтр, он используется для получения основы слова, например: "happy", "happiness" = > "happi" (Демо-версия Snowball)

Я использую этот анализатор в моем случае:

     {
      "settings":{
        "index" : {
            "analysis" : {
                "analyzer" : {
                    "analyzerWithSnowball" : {
                        "tokenizer" : "standard",
                        "filter" : ["standard", "lowercase", "englishSnowball"]
                    }
                },
                "filter" : {
                    "englishSnowball" : {
                        "type" : "snowball",
                        "language" : "english"
                    }
                }
            }
        }
      }
    }

Ссылка:

Ответ 3

Вот отличный плагин на github repo. Это несколько расширяет Анализ API. Нашел его на официальном эластичном плагине список.

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

Жаль, что я не нашел его раньше, чем сегодня. Благодаря этому я только узнал, почему токен-токен keyword_repeat, похоже, работает некорректно. Проблема была вызвана следующим фильтром токена: icu_transform (используется для транслитерации), который, к сожалению, не учитывал атрибут keyword и преобразовывал все токены. Не знаю, как еще я могу найти причину, если не для этого плагина.