Use sinônimos em elasticsearch

Solução 1: Exige mudanças no analisador personalizado criado e acrescentando que em nome do campo

Ponto 1: Adicionar minúsculas lexemas no mapeamento

Espaço em branco de lexemas não seria converter as fichas em minúsculas. E na lista de sinónimos, você adicionou 'Television' mas você está questionando 'television'.

adicione um filtro Token de minúsculas no seu mapeamento da seguinte forma e a sua consulta dar-lhe-á o resultado esperado.

ponto 2: Adicione o analisador ao nome do campo

verifique o prd_name como eu criei no mapeamento abaixo. Repare que adicionei analisador a ele.

mapeamento

PUT products{ "settings":{ "index":{ "analysis":{ "analyzer":{ "synonym":{ "tokenizer":"whitespace", "filter": } }, "filter":{ "synonym":{ "type":"synonym", "synonyms_path":"analysis/synonym.txt" } } } } }, "mappings":{ "mydocs":{ "properties":{ "prd_name":{ "type":"text", "analyzer":"synonym", "fields":{ "keyword":{ "type":"keyword", "ignore_above":256 } } } } } }}

Note que qualquer mudança de mapeamento exigiria que você recriasse o índice e ingerisse os documentos novamente.

certifique-se que o seu ficheiro de sinónimo está disponível em todos os nós.Avise-me se ajudar.

Solução 2: Redefinir padrão analisador

Em caso de que se você não é capaz de alterar o mapeamento de campo, o que você pode fazer é criar um analisador com o nome default nas configurações

Basicamente, redefinindo o default analisador com configurações exatamente como analisador synonym.

dessa forma seria o analisador padrão que seria usado em vez de standard analisador e não requer nenhuma mudança no mapeamento do nome do campo.

abaixo está como o mapeamento seria nesse caso.

mapeamento

PUT <your_index_name>{ "settings":{ "index":{ "analysis":{ "analyzer":{ "default":{ "tokenizer":"whitespace", "filter": } }, "filter":{ "synonym":{ "type":"synonym", "synonyms_path":"analysis/synonym.txt" } } } } }, "mappings":{ "mydocs":{ "properties":{ "prd_name":{ "type":"text", "fields":{ "keyword":{ "type":"keyword", "ignore_above":256 } } } } } }}

Note que eu simplesmente renomeei synonym para default no mapeamento. Nota importante :de alguma forma, você precisaria reindex todos os dados para que as alterações estivessem em vigor. No caso de você ter que mudar o mapeamento, reindex todos os dados, e você pode fazer qualquer coisa que você quiser w.r.t nomes de campos, então eu sugiro fortemente a solução 1.

avise – me se isto ajudar:)

Deixe uma resposta

O seu endereço de email não será publicado.

Related Posts