Sugestão do Elasticsearch não funciona ao alterar a posição

3 respostas
J

Olá

Tenho no ElasticSearch as palavras “carro rapido” e, quando digito o erro “carru rapidu”, a sugestão é exibida.

No entanto, se eu mudar a posição das palavras para “rapidu carru”, ele não exibirá mais a sugestão. Parece que as palavras precisam estar na mesma ordem no banco para exibir a sugestão.

Alguém pode me dizer por que quando mudo a posição das palavras o elasticsearch não encontra nenhuma sugestão?

Segue a consulta abaixo:

{

suggest : {

text : carru rapidu,   > se mudar para rapidu carru não encontra mais sugestão

simple_phrase : {

phrase : {

field :  descricao,

size :   1,

max_errors: 0.8,

gram_size : 2,

real_word_error_likelihood : 0.95,
"direct_generator" : [ {
      "field" :            "descricao",
      "suggest_mode" :     "always",
      "min_word_length" :  1
    } ],
    
     
     
     "highlight": {
      "pre_tag": "<b>",
      "post_tag": "</b>"
      
     },
     "collate": {
       "query": { 
         "inline" : {
           "match_phrase": {
               "{{field_name}}" : "{{suggestion}}"

           }
         }
       },
       "params": {"field_name" : "descricao"}, 

       "prune": true
     }
   }
 }

}

}

3 Respostas

A

Não conheço a api de sugestões e nem tenho informação suficiente para confirmar minhas suspeitas, mas um chute:

Você parece estar usando o match de frases, vejo “simple_phrase” e “match_phrase”.
Na busca normal, quando usa frases, a ordem das palavras importa no resultado.
Talvez tenha que usar uma busca por termos?

J

Olá @AbelBueno

O problema é que utilizando o “match_phrase” a query verifica se as sugestões existem no índice e não gerá sugestão que quando for pesquisado não existe, e se eu utilizar o “match” puro as ordens das palavras não influenciam, mas não faz mais a verificação se existe no Índice e gerá sugestões que quando é pesquisado não encontrará no meu índice.

A

Você pode fornecer um exemplo do mapping do seu indíce e alguns documentos de exemplo onde esse problema ocorre?
Incluindo mostrando a query usada no suggester (imagino que a do post original) e a query que você usa durante a search propriamente dita.
Ah, e qual a versão de elasticsearch tá usando também.

Criado 9 de maio de 2020
Ultima resposta 11 de mai. de 2020
Respostas 3
Participantes 2