Управление порядком фильтров токенов в ElasticSearch

Попытка контролировать порядок применения фильтров токенов в ElasticSearch.

Из документов я знаю, что сначала применяется токенизатор, затем фильтры токенов, но в них не упоминается, как определяется порядок фильтров токенов.

Вот фрагмент YAML из моего скрипта настройки анализа:

       KeywordNameIndexAnalyzer :
           type : custom
           tokenizer : whitespace
           filter : [my_word_concatenator, keyword_ngram]

Я бы подумал, что my_word_concatenator будет применяться перед keyword_ngram, но похоже, что это не так. Кто-нибудь знает, как (или если) порядок этих фильтров можно контролировать?

Большое спасибо!


person Clay Wardell    schedule 27.09.2012    source источник
comment
Ваши ожидания верны. Фильтры в пользовательский анализатор применяются в порядке, указанном массивом фильтров. Не могли бы вы привести пример, когда это не так?   -  person imotov    schedule 28.09.2012
comment
Вы правы — причина, по которой порядок казался неправильным, заключалась в том, что я использовал бессмысленную комбинацию токенизатора и фильтров токенов. Если вам интересно, my_word_concatenator удаляет пробелы, но, поскольку я использовал токенизатор пробелов, в токенах, которые попали в фильтры, пробелов не было. Так что 1 вообще не происходило, в отличие от того, что происходило после 2.   -  person Clay Wardell    schedule 28.09.2012
comment
Это лучше задокументировано в пользовательских анализаторах. раздел. так что да порядок имеет значение в вашем случае   -  person Hasan Rahal    schedule 05.07.2016


Ответы (1)


Анализатор состоит из токенизатора, который разбивает ваш текст на токены. После этого появляются фильтры токенов в том порядке, в котором вы их настроили, поскольку вы предоставляете массив. Если у вас есть сомнения, я бы посоветовал вам взглянуть на проанализировать API, с помощью которого вы можете проверить, как работает анализатор, не индексируя текст.

person javanna    schedule 28.09.2012