ElasticSearch: Analyzer e seus amigos Tokenizer e Filter

Será que seria aceitável se o Google não ‘adivinha-se’, quando você está procurando por FLAMENGO, e você coloca em sua busca MENGO?
Se ele não te peguntar o que você quis dizer no erro de sua ortografia, seria chato, né?
😦
Se o motor de busca não “prever” o que estamos procurando, estaremos circunscritos a nos apaixonar por outro motor de busca que possa fazer essa tal “mágica”!
Um BING, quem sabe… 😛

Esse artigo focará na sutileza dos Analyzers, para tentar mostrar que ele são mais do que um valor exato de MENGO. Em suma, queremos ter uma melhor compreensão da pesquisa.

Com essa pequena introdução, poderei dar um enfoque melhor nos processos de análise do ElasticSearch.

Ao inserir dados em um índice no ElasticSearch, eles são armazenados em uma estrutura chamada de índice invertido, isso quer dizer que os dados são transformados e passam por um processo. Esse processo de transformação dos dados é chamados de análise.(ou Analysis).  

Curiosidade: Esse processo de analise tem dois pilares básicos:  tokenizing e normalizing.

O primeiro passo desse processo de analise é quebrar o texto em termos usando o Tokenizer após passar pelo filtro de caracteres, em seguida, esses termos são normalizados para serem facilmente pesquisáveis.

diagrama-textGeralmente um Analyzer é composto pode um tokenizing e um ou vários filters.

Curiosidade: O ElasticSearch faz o controle em tempos de execução da consulta, você está livre para usar um novo Analyzer a qualquer hora. 🙂

Voltando…

O ElasticSearch já vem com vários Analyzer instalados.

São eles:
Standard Analyzer
Utiliza o Standard Tokenizer para fatiar o texto, juntamente com o Standard Token Filter, Lowercase Token Filter e o Stop Token Filter. Normaliza símbolos, letras minusculas.

Simple Analyzer
Utiliza o Letter Tokenizer para fatiar texto, juntamente com o Lowercase Tokenizer.

Whitespace Analyzer
Utiliza o Whitespace Tokenizer para fatiar o texto com espaços.

Stop Analyzer
Utiliza o Letter Tokenizer para fatiar o texto, juntamente com o Lowercase Tokenizer e o Stop Token Filter. Remove palavras a partir de fluxos de token.

Pattern Anaylzer
Utiliza expressão regular para fatiar o texto.

Language Analyzer
Utiliza um conjuntos de Analyzers para analisar o texto para um determinado idioma.
São vários idiomas. =)

Os Analyzers seguem três ‘dogmas’ principais que utilizam filtros de caracteres, tokenizers e filtros de termos, são eles:

  1. Filtragem de caracteres
  2. Tokenização
  3. Filtragem de termos.

Pelo que já foi explicado acima, já podemos ter um entendimento de como funciona um Analyzer, certo?

Não?  😦

Ok, então segue mais uma explicação.

O Processo de analise se utiliza de um Tokenizer para quebrar um texto em tokens (ou termos). Antes dessa operação, o texto é transmitido através de algum filtro de caracteres.

Em seguida, os filtros de efetuam seu trabalho.

Esses filtros de caracteres são sempre utilizados antes do Tokenizer em um processo de analise.

O ElasticSearch foi construído com filtros personalizados e nos deixa construir nossos próprios filtros.

Já que falamos em Filtros, vamos ver alguns?

(Continua…)

Anúncios

Systems Analyst / .Net Developer

Marcado com: , , ,
Publicado em Artigos

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: