Utiliser des synonymes dans elasticsearch

Solution 1: Nécessite une modification de l’analyseur personnalisé créé et l’ajout de celui-ci dans le nom de champ

Point 1: Ajouter un tokenizer en minuscules dans le mappage

Le tokenizer en espaces blancs ne convertirait pas les jetons en minuscules. Et dans la liste des synonymes, vous avez ajouté 'Television' mais vous interrogez 'television'.

Ajoutez un filtre de jeton en minuscules dans votre mappage comme suit et votre requête vous donnera le résultat attendu.

Point 2: Ajouter un analyseur au nom de champ

Vérifiez le prd_name comme j’ai créé dans le mappage ci-dessous. Notez que j’y ai ajouté analyzer.

Mappage

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 } } } } } }}

Notez que toute modification de mappage vous obligerait à recréer l’index et à ingérer à nouveau les documents.

Assurez-vous que votre fichier de synonymes est disponible dans tous les nœuds.

Faites-moi savoir si cela vous aide.

Solution 2: Redéfinir l’analyseur par défaut

Si vous ne parvenez pas à modifier le mappage du champ, vous pouvez créer un analyseur avec le nom default dans les paramètres

Redéfinissant fondamentalement l’analyseur default avec les paramètres exactement comme analyseur synonym.

De cette façon, ce serait l’analyseur par défaut qui serait utilisé à la place de l’analyseur standard et ne nécessite aucun changement dans le mappage du nom du champ.

Voici comment le mappage serait dans ce cas.

Mappage

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 } } } } } }}

Notez que j’ai simplement renommé synonym en default dans le mappage.

Remarque importante: D’une manière ou d’une autre, vous devrez réindexer toutes les données pour que les modifications soient en vigueur. Dans le cas où vous deviez changer de mappage, réindexer toutes les données et que vous puissiez faire tout ce que vous voulez avec les noms de champs, je suggère fortement la solution 1.

Faites-moi savoir si cela aide 🙂

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Related Posts