English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Во время обработки запроса в процессе поиска модуль анализа анализирует содержимое любого индекса. Этот модуль состоит из анализатора, генератора токенов, фильтра токенов и фильтра символов. Если анализатор не определен, по умолчанию в модуле анализа регистрируются встроенный анализатор, токены, фильтры и генератор токенов.
В следующем примере мы используем стандартный анализатор, который используется по умолчанию при отсутствии других анализаторов. Он анализирует предложение по грамматике и создает слова, используемые в предложении.
POST _analyze { "analyzer": "standard", "text": "Today's weather is beautiful" }
После выполнения上面的 кода мы получаем следующий ответ:
{ "tokens": [ { "token": "today's", "start_offset": 0, "end_offset" : 7, "type" : "", "position": 0 }, { "token": "weather", "start_offset" : 8, "end_offset" : 15, "type" : "", "position": 1 }, { "token": "is", "start_offset": 16, "end_offset": 18, "type" : "", "position": 2 }, { "token": "beautiful", "start_offset": 19, "end_offset" : 28, "type" : "", "position": 3 } ] }
Мы можем использовать различные параметры для настройки стандартного анализатора, чтобы удовлетворить наши пользовательские требования.
В следующем примере мы настроим стандартный анализатор на max_token_length равным 5.
Для этого мы сначала создаем индекс с параметром max_length_token.
PUT index_4_analysis { "settings": { "analysis": { "analyzer": { "my_english_analyzer": { "type": "standard", "max_token_length": 5, "stopwords": "_english_" } } } } }
Далее, мы используем следующий текст для применения анализатора. Обратите внимание, что маркеры не отображаются, так как в начале и в конце есть два пробела. Для " Слово "is" имеет пробелы в начале и конце, которые должны быть удалены, так как они становятся четырьмя пробельными символами, что не означает, что это слово. По крайней мере, в начале или конце должно быть некое символ, чтобы это стало словом, которое следует учитывать.
POST index_4_analysis/_analyze { "analyzer": "my_english_analyzer", "text": "Today's weather is beautiful" }
После выполнения上面的 кода мы получаем следующий ответ:
{ "tokens": [ { "token" : "today", "start_offset": 0, "end_offset" : 5, "type" : "", "position": 0 }, { "token" : "s", "start_offset" : 6, "end_offset" : 7, "type" : "", "position": 1 }, { "token" : "weath", "start_offset" : 8, "end_offset" : 13, "type" : "", "position": 2 }, { "token" : "er", "start_offset" : 13, "end_offset" : 15, "type" : "", "position": 3 }, { "token" : "beaut", "start_offset": 19, "end_offset" : 24, "type" : "", "position": 5 }, { "token" : "iful", "start_offset" : 24, "end_offset" : 28, "type" : "", "position": 6 } ] }
В таблице ниже приведен список различных анализаторов и их описание-
Номер | Анализаторы и их описание |
---|---|
1 | Стандартный анализатор(standard) Параметры stopwords и max_token_length могут быть установлены для этого анализатора. По умолчанию, список stopwords пуст, max_token_length составляет 255. |
2 | Просто анализатор(simple) Этот анализатор состоит из нижнего регистра токенизатора. |
3 | Пространственно-анализатор (whitespace) Этот анализатор состоит из маркеров пробелов |
4 | Остановить анализатор (stop) Можете настроить stopwords и stopwords_path. По умолчанию stopwords инициализируются английскими стоп-словами, а stopwords_path содержит путь к текстовому файлу с стоп-словами |
Генератор токенов используется для генерации токенов из текста Elasticsearch. Добавляя в рассмотрение пробелы или другие знаки препинания, текст можно разложить на маркеры. Elasticsearch имеет множество встроенных маркеров, которые можно использовать в пользовательских анализаторах.
Ниже показан пример морфологического анализатора, который при встрече с несимвольными символами разлагает текст на несколько слов, но также делает все слова строчными, как показано ниже-
POST _analyze { "tokenizer": "lowercase", "text": "It Was a Beautiful Weather 5 Days ago." }
После выполнения上面的 кода мы получаем следующий ответ:
{ "tokens": [ { "token": "it", "start_offset": 0, "end_offset": 2, "type": "word", "position": 0 }, { "token": "was", "start_offset": 3, "end_offset": 6, "type": "word", "position": 1 }, { "token": "a", "start_offset": 7, "end_offset": 8, "type": "word", "position": 2 }, { "token": "beautiful", "start_offset": 9, "end_offset": 18, "type": "word", "position": 3 }, { "token": "weather", "start_offset": 19, "end_offset": 26, "type": "word", "position": 4 }, { "token": "days", "start_offset": 29, "end_offset": 33, "type": "word", "position": 5 }, { "token": "ago", "start_offset": 34, "end_offset": 37, "type": "word", "position": 6 } ] }
Список генераторов токенов и их описание приведены в таблице ниже:
Номер | Токенизатор и описание |
---|---|
1 | Маркер стандартного (standard) Это основано на языковой маркере, max_token_length может быть настроено для этого маркера. |
2 | Маркер NGram края(edgeNGram) Такие настройки, как min_gram, max_gram, token_chars, могут быть установлены для этого маркера. |
3 | Маркер ключевых слов (keyword) Это генерирует весь ввод в качестве вывода, buffer_size может быть установлено для этой маркера. |
4 | Маркер письма (letter) Это捕获整个单词, до встречи с одним из немых. |