Retirer mon "LE"

Bonjour

cutoff_frequency permet dans un match de se débarrasser des token trop présent comme : LE, DU,...

Par exemple: TAVERNE LE PALACE
Elastic va me retourner les docs qui contiennent le terme LE comme : LE MANOIR

J'ai ma requête comme ceci (suis en php)

[
        'match' => [
            'societe' => [
                'query' => $keyword,                  
                'cutoff_frequency' => 0.001 
            ]
        ]
    ];

Grâce à cutoff_frequency mon problème est résolu, le "LE" n'est pas pris en compte et je n'ai plus que des résultats contenant TAVERNE et PALACE

Mais cutoff_frequency est déprécié

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html#query-dsl-match-query-cutoff

Par quoi doit on le remplacer ?

Voici mon mapping:
https://github.com/jfsenechal/bottin/tree/master/src/AcMarche/Bottin/config/elastic

Merci

Tu peux utiliser le french analyzer avec un stopwords que tu peux definir.

Ok merci, mais alors ce système de "stop word dynamique"
n'existe plus en 7.6 ?

Je t'invite à lire : https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-stop-tokenfilter.html

J'ai appliqué à mon schéma mais ça change rien
schema

Je l'applique mal ?

Autre chose me turlupine, quand je crée mon query, je dois appliquer un analyzer ?
ou ca le fait tout seul ?

Merci

Bonjour,
Si ton problème n'est toujours pas réglé, dans l'ordre:
0- Supprimer ton index bottin et le recréer (sur gist ton fichier schema.json):
https://www.elastic.co/guide/en/elasticsearch/reference/7.6/indices-delete-index.html
1- Définir le settings (sur gist ton fichier settings.json):
https://www.elastic.co/guide/en/elasticsearch/reference/7.6/indices-update-settings.html
2- Définir le mapping (sur gist le fichier mappings.json):
https://www.elastic.co/guide/en/elasticsearch/reference/7.6/indices-put-mapping.html
3- Ajouter un document avec le champ societe: "TAVERNE LE PALACE" et un autre document avec la societe: "LE MANOIR" :
https://www.elastic.co/guide/en/elasticsearch/reference/7.6/docs-index_.html
4 - Requêter sur le champ societe et ça devrait retourner que TAVERNE LE PALACE et non pas le second document.

Ca devrait fonctionner si j'ai bien compris ton problème.

Vu que tu as appliqué un mapping à ton document la valeur sauvegardé dans le champ societe ne contiendra pas "LE" étant donnée que c'est un stop word.

A propos de ta dernière réponse

Le problème est sûrement dû au fait que ton document existe déjà et que ton mapping n'est pas appliqué, d'où l'importance de suivre l'ordre définit au dessus.

Oui fait
Ca fonctionne

Merci :slight_smile:

1 Like

Cool,

Tu peux marquer la discussion on résolu et rajouter ta solution ça peux aider si d'autres personnes rencontrent le même problème.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.