Comment forcer les correspondances exactes lors de la recherche ?

J’ai remarqué que pour certaines recherches, je n’obtiens aucun résultat :

Mais si j’affine la recherche, par exemple à un sujet spécifique, j’obtiens bien le résultat que je cherche :

J’ai d’abord pensé que cela pouvait être lié au caractère accentué, mais j’ai effectué plusieurs tests et la même chose se produit avec des caractères non accentués.

Ma seconde hypothèse était que cela pouvait être dû aux mots vides, mais j’ai modifié app.yml pour tronquer le dictionnaire des mots vides espagnols :

ls -l /usr/share/postgresql/13/tsearch_data/spanish.stop
-rw-r--r-- 1 root root 0 May 12 06:37 /usr/share/postgresql/13/tsearch_data/spanish.stop
                       ☝️

Existe-t-il des paramètres que je pourrais ajuster pour m’assurer que les correspondances exactes sont toujours trouvées ?

Bonjour @Nacho_Caballero,

Pourriez-vous me fournir un exemple de texte et un terme de recherche permettant de reproduire le problème ? Je vois l’image, mais seul l’extrait est visible.

Merci, Alan.

Voici le contenu de ce message spécifique :

En effet, on ne l’utilise pas après « je pense que » car ce que vous affirmez être votre pensée est une réalité et non une possibilité.

D’un autre côté, nous utilisons le subjonctif lorsque nous employons cette même structure, mais à la forme négative : « Je ne pense pas qu’il y ait beaucoup de monde sur le marché aujourd’hui ».

J’espère que cela répond à votre question, mais si vous avez besoin de plus de détails, n’hésitez pas à me le dire, je serai ravi de vous aider.

Cordialement ! :smiley:

Cependant, pour reproduire ce comportement ici, il faudrait définir la locale sur l’espagnol et tronquer le dictionnaire :sweat_smile:

Je l’ai testé sur un site Discourse de développement que j’exécute localement et je n’ai pas réussi à reproduire le comportement, mais je pense que c’est parce que le site est pratiquement vide. Je ne pense pas que ce problème se pose tant que vous n’avez pas beaucoup de messages (j’en ai actuellement environ 68 000).

Je pourrais essayer d’autres choses liées au dictionnaire Postgres, mais je ne suis pas sûr de savoir comment accéder à mon image Docker lors d’une installation de développement. Existe-t-il un équivalent à launcher enter app ?

Idéalement, il devrait y avoir un moyen d’ignorer les mots vides. Par exemple, pour rechercher cette phrase dans votre message :

@Nacho_Caballero, salut ! Pourrais-tu me dire quel algorithme de recherche Discourse utilise actuellement ? Cela m’aiderait à investiguer le problème.

Merci, Yashi.

Je suppose que Discourse utilise l’algorithme de recherche plein texte par défaut de Postgres. Je pense que la seule façon d’obtenir des correspondances exactes lors de l’utilisation de guillemets (sans mise en forme lexicale et sans ignorer les mots vides) serait d’utiliser le dictionnaire « simple » :thinking:

Merci, @Nacho_Caballero.

Je vais examiner l’algorithme de recherche plein texte de Postgres.

Est-il possible de rechercher une correspondance exacte ?

Exemple :

Actuellement, la recherche de « flow » renvoie malheureusement « flower » comme résultat le plus pertinent.

Essayez de rechercher avec des guillemets, par exemple recherchez « flow » et non flow.