Elasticsearch Pesquisa Fuzzy

Elasticsearch Pesquisa Fuzzy
Você já se perguntou como as ferramentas de mecanismo de pesquisa como o Google podem prever com precisão suas consultas de pesquisa enquanto você digita? Ou erros de digitação correta em suas consultas de pesquisa? Não, não é um raciocínio humano.

Essa funcionalidade é possível devido a um conceito chamado lógica difusa, confundir ou pesquisas difusas.

O que é confuso?

Fuzziness ou lógica difusa refere -se a uma lógica matemática que descreve que a verdade de um valor pode ser uma série de números entre 0 e 1, onde 1 representa a verdade absoluta e 0 representa falsa absoluta.

Ao contrário da lógica booleana com dois valores distintos: 0 e 1, a lógica difusa aceita uma faixa variável de verdade.

Em termos simples, a imprecisão descreve como um valor pode ser claro. Tomemos, por exemplo, um erro de digitação. Como você sabe que é um erro de digitação? Você avalia as letras existentes e determina o que a palavra estava tentando descrever.

Na lógica difusa, podemos expressar isso na faixa de 0 e 1. Se um erro de digitação é Helli, é mais provável que descreva olá ou inferno, em vez de descrever "humano" ou "tomate.”

Pesquisa difusa no Elasticsearch

Uma pesquisa difusa encontrará os valores correspondentes com base na consulta inicial com base nos critérios específicos.

Elasticsearch implementa a imprecisão usando o algoritmo de distância de edição de Levenshtein.

A distância de edição é o número total de variações de palavras, como edições, exclusão, substituição ou transposição da palavra inicial para atingir uma palavra -alvo.

Como funciona a pesquisa nebulosa do Elasticsearch

O algoritmo é simples de entender. Você começa pegando duas palavras e comparando -as sequencialmente, personagem por personagem.

Se o personagem for diferente, você incrementa a distância entre as palavras por um. Você então determina o valor da distância final entre as letras.

OBSERVAÇÃO: O exposto acima não descreve a implementação matemática do algoritmo. Considere o link

Elasticsearch Fuzzy Query

Uma consulta difusa não é muito diferente de uma consulta de elasticsearch regular. Para usá -lo, adicione o parâmetro de imprecisão à consulta de pesquisa.

Você também pode adicionar a distância máxima de Levenshtein para usar em sua consulta.

Get Kibana_sample_data_ecommerce/_search

"consulta":
"difuso":
"categoria":
"Valor": "masculino",
"Fuzziness": 0.5



Executamos uma consulta difusa para corresponder aos termos "masculinos" e estabelecemos um valor de imprecisão personalizado no exemplo acima.

Abaixo está um exemplo de resposta:

Se você diminuir a distância de edição, o Elasticsearch limitará a distância da pesquisa, o que levará a falta de alguns valores.

Por exemplo, a consulta a seguir com uma distância de edição de 0.2 não retornará resultados.

Get Kibana_sample_data_ecommerce/_search

"consulta":
"difuso":
"categoria":
"Valor": "masculino",
"Fuzziness": 0.2



A resposta é como mostrado abaixo:

Parâmetro Elasticsearch Fuzziness

Como mencionado, o parâmetro de esgotamento na consulta define a distância máxima de edição de Levenshtein ou o número de edições.

Podemos especificar os valores de imprecisão como: 0, 1, 2 ou automático.

Quando você define manualmente a distância de edição para suas consultas difusas, você pode perder alguns resultados. Elasticsearch fornece um valor automático que permite que o Elasticsearch determine a distância de edição.

Por exemplo:

Get Kibana_sample_data_ecommerce/_search

"consulta":
"difuso":
"categoria":
"Valor": "masculino",
"Fuzziness": "Auto"



Se você tiver o valor definido como automático, o Elasticsearch editará a distância com base no comprimento do termo de pesquisa. Você também pode especificar valores baixos e altos para o automóvel como:

AUTO:[baixo] ou AUTO:[alto]

Para entender como a imprecisão funciona no Elasticsearch, verifique a documentação.

Consulta de partida multi-fuzzy

Você pode usar o Elasticsearch Multi-Query com a imprecisão, como mostrado na consulta de exemplo abaixo:

Get Kibana_sample_data_ecommerce/_search

"consulta":
"multi_match":
"Query": "Sapatos",
"Fields": ["categoria", "Customer_First_Name"],
"Fuzziness": "Auto"


A resposta para isso é:

Elasticsearch Associação Fuzzy Parâmetros

Os parâmetros de campo e valor são necessários ao usar a consulta difusa no Elasticsearch. Outros parâmetros, como a imprecisão, são opcionais, mas podem desempenhar um papel essencial na consulta.

Outros parâmetros incluem:

max_expansions - Controla o número de variações criadas. Está definido como 60 por padrão. Elasticsearch desencoraja especificar um alto valor para max_expansions, pois pode levar a um desempenho ruim.

Transposições - Determina se a distância de edição inclui transposições de dois caracteres adjacentes. Este valor é definido como true por padrão.

prefix_length - Isso define o número de caracteres iniciais para deixar inalterado durante a expansão. Este valor é definido como 0 por padrão.

Reescrever - Define o método para reescrever a consulta. O valor padrão está definido como constant_core. Outros métodos incluem:

  1. Constant_core_boolean
  2. Scoring_Boolean
  3. top_terms_boost_n
  4. top_terms_n
  5. TOP_TERMS_BLEND_FREQS_N

OBSERVAÇÃO: Evite alterar o método de reescrita, a menos que tenha certeza do que está fazendo.

Conclusão

Elasticsearch é uma ferramenta poderosa por conta própria. No entanto, como mostrado neste tutorial, ele pode fornecer energia maciça quando acoplado a recursos como consultas difusas.

É bom observar que há mais na consulta difusa do Elasticsearch do que o discutido neste guia. Por favor, considere a documentação para saber mais.

Obrigado pela leitura!