English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Durante a manipulação da consulta na operação de pesquisa, o módulo de análise analisará o conteúdo de qualquer índice. O módulo é composto por analisador, gerador de tokens, filtro de tokens e filtro de caracteres. Se o analisador não for definido, o analisador, tokens, filtros e gerador de tokens integrados serão registrados no módulo de análise por padrão.
Neste exemplo, usamos um analisador padrão, que é usado quando nenhum outro analisador é especificado. Ele analisará a sintaxe da frase e gerará as palavras usadas na frase.
POST _analyze { "analyzer": "padrão", "text": "hoje o tempo está lindo" {}
Após executar o código acima, obtemos a seguinte resposta:
{ "tokens": [ { "token" : "hoje", "start_offset": 0, "end_offset": 7, "type": "", "position": 0 }, { "token": "weather", "start_offset": 8, "end_offset": 15, "type": "", "position": 1 }, { "token" : "é", "start_offset": 16, "end_offset": 18, "type": "", "position": 2 }, { "token": "beautiful", "start_offset": 19, "end_offset": 28, "type": "", "position": 3 {} ]] {}
Podemos usar vários parâmetros para configurar o analisador padrão para atender às nossas necessidades personalizadas.
Neste exemplo, configuramos o analisador padrão para max_token_length de5.
Para isso, primeiro usamos um analisador com o parâmetro max_length_token para criar o índice.
PUT "index_"4_analises { "settings": { "analysis": { "analyzer": { "meu_analista_ingles": { "type": "padrão", "max_token_length": 5, "stopwords": "_ingles_" {} {} {} {} {}
Em seguida, usamos o analisador de texto conforme mostrado a seguir. Observe como os tokens não são exibidos, pois têm dois espaços no início e dois no final. Para " a palavra "is", cujo início tem um espaço e o final também tem um espaço. Removendo todos eles, ficamos com4um caractere com espaço, isso não significa que ele é uma palavra. Pelo menos no início ou no final deve haver um caractere não em branco para torná-lo uma palavra a ser contada.
POST "index_"4_analises/_analise { "analyzer": "meu_analista_ingles", "text": "hoje o tempo está lindo" {}
Após executar o código acima, obtemos a seguinte resposta:
{ "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 {} ]] {}
A tabela a seguir lista várias analisadores e suas descrições-
Número | Analisadores e descrições |
---|---|
1 | Analisador padrão(standard) stopwords e max_token_length podem ser configurados para este analisador. Pelo padrão, a lista de stopwords está vazia e max_token_length é255. |
2 | Analisador simples(simple) Este analisador é composto por tokenizer em minúsculas. |
3 | Analisador de espaço em branco (whitespace) Este analisador é composto por marcadores de espaço |
4 | Analisador de parada (stop) Pode configurar stopwords e stopwords_path. Pelo padrão, stopwords inicializa como stopwords em inglês e stopwords_path contém o caminho para o arquivo de texto que contém stopwords |
O gerador de tokens é usado para gerar tokens a partir do texto da Elasticsearch. Considerando espaços ou outros sinais de pontuação, o texto pode ser dividido em marcadores. A Elasticsearch possui muitos tokenizadores built-in que podem ser usados em analisadores personalizados.
A seguir, é mostrado um exemplo de tokenizer, que divide o texto em várias palavras ao encontrar caracteres não alfabéticos, mas também coloca todas as palavras em minúsculas, conforme mostrado-
POST _analyze { "tokenizer": "lowercase", "text": "It Was a Beautiful Weather 5 Days ago. {}
Após executar o código acima, obtemos a seguinte resposta:
{ "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 {} ]] {}
A lista de geradores de tokens e suas descrições estão conforme a tabela a seguir:
Número | Tokenizadores e Descrições |
---|---|
1 | Marcador Padrão (standard) Este é construído com base no marcador sintático, max_token_length pode ser configurado para esse marcador. |
2 | Marcador NGram de Borda(edgeNGram) Configurações como min_gram, max_gram, token_chars podem ser configuradas para esse marcador. |
3 | Marcador de Palavra-chave (keyword) Isso gerará toda a entrada como saída, buffer_size pode ser configurado para isso. |
4 | Marcador de Letra (letter) Isso capturará toda a palavra até encontrar um caractere não alfabético. |