La fonction de recherche renvoie des résultats approximatifs ?

Hi.

I was searching for this topic on my forum: les passants - Autour d'une roue - Monocycle.info

The topic’s title is “les passants”

Before, searching with “passants in:title” would return this topic among the first results.

But now, it displays approximate results:

Instead of “passants”, you’ll see “passe”, “pass”, “passage”, “passion”, some of these words before even the exact string “passants”…

I suppose this is a bug?

Je crains de ne pas en savoir assez sur la recherche pour savoir si c’est intentionnel ou non, mais vous pouvez ajouter des guillemets doubles autour d’un mot pour en faire une recherche exacte si cela peut vous aider ?

Par exemple : "passants"

1 « J'aime »

Cela aide certainement, mais le comportement par défaut est déroutant.

Pour une raison inconnue, lors de la recherche de la chaîne exacte avec des guillemets doubles, elle renvoie également un résultat qui n’a pas de « passants » dans le titre (mais il en a dans le contenu du premier message) :

1 « J'aime »

In French, passants is reduced to the pass lexeme before we search against the contents of the posts.

A lexeme is a string, just like a token, but it has been normalized so that different forms of the same word are made alike.

4 « J'aime »

Je comprends.

Les lexèmes sont-ils liés à la langue ?

Je ne pense pas que cela ait beaucoup de sens en français de réduire un tel mot à « pass ». :thinking: C’est plus déroutant qu’utile étant donné qu’il existe de nombreux mots commençant par « pass » sans être (directement ou non) liés au verbe « passer ».

Mais si nous pouvons cibler la chaîne exacte avec des guillemets doubles à la place, cela suffira :slight_smile:.

De plus, pourquoi le deuxième résultat n’a-t-il pas « passants » dans le titre malgré l’utilisation des guillemets doubles sur ma dernière capture d’écran ?

Ces éléments sont configurables dans Postgres, mais l’implémentation française dans Postgres est ce qui réduit tout cela :

discourse_development=# select to_tsvector('french', 'passants');
 to_tsvector
-------------
 'pass':1
(1 row)

discourse_development=# select to_tsvector('english', 'passants');
 to_tsvector
-------------
 'passant':1
(1 row)

Il existe des dictionnaires plus sophistiqués qui peuvent être utilisés, mais leur configuration est extrêmement compliquée.

3 « J'aime »