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

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

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


person Vamsi Krishna    schedule 11.10.2012    source источник
comment
На самом деле я только что нашел это замечательное сообщение в блоге о том, как анализаторы работают в elasticsearch, с конкретными примерами: found.no/foundation/text-analysis-part-1   -  person BrDaHa    schedule 24.02.2015
comment
Это действительно стоило посмотреть новичку ... Спасибо @BrDaHa   -  person Vamsi Krishna    schedule 25.02.2015
comment
technocratsid.com/elasticsearch-analyzers   -  person TechnocratSid    schedule 16.10.2018


Ответы (3)


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

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

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

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

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

Анализатор - это смесь всего этого.

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

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

Чтобы понять, как это работает. Очень полезный.

person dadoonet    schedule 11.10.2012
comment
Вы можете поиграть с этим плагином, чтобы немного лучше понять анализаторы, токенизаторы и фильтры. - person czerasz; 16.12.2013
comment
похоже, что это не работает для токенизатора и фильтра edgeNGram - person Mohammad Reza Esmaeilzadeh; 05.07.2015

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

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

  1. Character filter: привести строку в порядок перед ее токенизацией, например. удалить HTML-теги
  2. Tokenizer: используется для разделения строки на отдельные термины или токены. Должен быть только 1.
  3. Token filter: изменять, добавлять или удалять токены. Stemmer - это пример фильтра токенов. Используется для получения основы слова, например. happy и happiness имеют одинаковую базу happi.

См. демонстрацию Snowball здесь

Это пример настройки:

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

Ссылка:

  1. Сравнение анализаторов Lucene
  2. http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/custom-analyzers.html.
person Tho    schedule 16.01.2015

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

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

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

person slawek    schedule 19.06.2015