Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Non-Alphabetic order for suggester values #1166

Open
1 task done
JulienCarmona opened this issue Oct 29, 2024 · 6 comments
Open
1 task done

Non-Alphabetic order for suggester values #1166

JulienCarmona opened this issue Oct 29, 2024 · 6 comments
Assignees
Labels
Type: Bug Something isn't working

Comments

@JulienCarmona
Copy link
Contributor

JulienCarmona commented Oct 29, 2024

Describe the bug

Order is non-alphabetic when we have echo with the same score

To Reproduce

Warning

Need env with nomenclature L_LANGUE-2-0-0.
Ok on QF

  1. Create a survey with suggester Langues
  2. Go to visu DSFR
  3. Go to sugg question
  4. Type "FRA"
  5. See wrong order

Expected behavior

We should have alphabetic order

Screenshots

image

Version where the bug appeared

Stromae : 1.2.2 | Lunatic : 3.4.4

Browser where the bug was tested

  • Firefox
@JulienCarmona JulienCarmona added the Type: Bug Something isn't working label Oct 29, 2024
@laurentC35
Copy link
Contributor

Lié à la #1161 , on peut traiter cette issue pendant la correction de #1161

@JulienCarmona que penses-tu d'une US plus global : "Correction des suggesters"

@laurentC35
Copy link
Contributor

laurentC35 commented Oct 31, 2024

@JulienCarmona Je pense que ton "Expected behavior" c'est plus compliqué que ça.
Aujourd'hui l'algorithme qui ordonne les résultats de la recherhe est le suivant: melotau:

/**
 * Melauto scoring algorithm
 *
 * - Rank up result if the word is closer to the start of the string
 * - Rank better the first word in the query
 * - Rank up the proportion of query terms in the string
 */

Comment souhaite-on modifier cet algorithme, on ajouter un tri alphabétique (pour les résultats ayant le même score ?)
On doit par contre clarifier (via des tests prévus dans la #1161 , le fonctionnement de la 3ème règle)

Dans le cas que tu donnes, les 4 premiers résultats de la recherche ont le même score selon l'algorithme de classement des résultats (melauto). Ils apparaissent donc de manière pseudo-aléatoire (non déterministe) dans la liste.

Il faut soit : revoir cet algorithme, en ajoutant par exemple une autre règle du type:

  • pour les échos qui ont le même score, les rangés selon une règle alphabétique
  • ajouter un poids du type si le token représente une plus grosse proportion du résultat

Exemple concret

J'ai une liste de 3 mots ["france", "francais", "franca"].
Je tape dans ma barre de recherche "fra".

Quel est l'ordre souhaité ? Expliquer pourquoi ?
PS: aujourd'hui avec le tri actuel, ces 3 mots ont le même score, donc pas d'ordre déterministe possible.

@AnneHuSKa
Copy link

Mémo : #908 (que je vais donc clore car doublon)

@QRuhier
Copy link
Contributor

QRuhier commented Nov 18, 2024

Et que souhaite-t-on pour les chaînes alpha-numériques ?

Exemples concrets :

J'ai une liste de 3 mots ["Paris 1e arrondissement", "Paris 2e arrondissement", "Paris 12e arrondissement"].
Je tape dans ma barre de recherche "Paris".

J'ai une liste de 3 mots ["12e Paris", "120e Paris", "12e Lyon", "120e Lyon"].
Je tape dans ma barre de recherche "12".

Quel est l'ordre souhaité dans chacun de ces 2 cas ?

@JulienCarmona
Copy link
Contributor Author

@laurentC35 @QRuhier

Ordre Alphabétique

Pour l'utilisateur, je pense qu'il s'attend à avoir un résultat dans l'ordre alphabétique.
Ce n'est pas ce que fait le sugg et on ne veut pas réinventer la roue donc dans un premier temps pour ce cas précis, j'irai pour l'ajout d'une 4eme règle qui dans le cas où on a 2 echos avec le même score alors, on les trie alphabétiquement.

Nb de lettres

Je m'attends aussi à ce qu'apparaissent en premier les echos avec le moins de lettre :

  • pour la saisie arch on a arche avant archer

Exemples concrets :

Cas 1

Pour ["france", "francais", "franca"], si on recherche fra, je retrouve

  • ["franca", "france", "francais"]

Cas 2

J'ai une liste de 3 mots ["Paris 1e arrondissement", "Paris 2e arrondissement", "Paris 12e arrondissement"].
Je tape dans ma barre de recherche "Paris".
-> On veut un ordre effectivement alphanumérique aussi
-> ["Paris 1e arrondissement", "Paris 2e arrondissement", "Paris 12e arrondissement"]

Note

Je pense que ce cas est très dur à implémenter car comment faire comprendre que '12e' et '12' + 'e' et non pas '1' + '2' + 'e'
Dans un premier temps on laisse le scoring choisir et si des users ne sont pas content on verra à ce moment là

Cas 3

J'ai une liste de 3 mots ["12e Paris", "120e Paris", "12e Lyon", "120e Lyon"].
Je tape dans ma barre de recherche "12".
-> Même combat qu'au dessus, on laisse le comportement par défaut de l'algo Melauto

@QRuhier
Copy link
Contributor

QRuhier commented Nov 29, 2024

@JulienCarmona En réalité pour les cas 2 et 3, le tri alpha-numeric permet très simplement de les gérer (c'est ce qui se faisait en 2.7 d'ailleurs). En revanche si on met avant une règle de nombre de caractère ça poserait certaines différences :

cas 1

  • si tri alpha-numeric :
    ["franca", "francais", "france"]
  • si tri par nombre de caractère (puis tri alpha-numeric si autant de caractères) :
    ["franca", "france", "francais"]

cas 2

  • si tri alpha-numeric :
    ["Paris 1e arrondissement", "Paris 2e arrondissement", "Paris 12e arrondissement"]
  • si tri par nombre de caractère (puis tri alpha-numeric si autant de caractères) :
    ["Paris 1e arrondissement", "Paris 2e arrondissement", "Paris 12e arrondissement"]

Mais si au lieu de "1e" on a mis "1er", alors dans le cas par nombre de caractère il passerait en 2e dans la liste 👎 il resterait bien 1e dans le cas de tri alpha-numeric simplement

cas 3

  • si tri alpha-numeric :
    ["12e Lyon", "12e Paris", "120e Lyon", "120e Paris"]
  • si tri par nombre de caractère (puis tri alpha-numeric si autant de caractères) :
    ["12e Lyon", "12e Paris", "120e Lyon", "120e Paris"]

Et pour ce qui est de pour la saisie arch on a arche avant archer, le tri alphabétique gère déjà ce cas (un mot identique au quel on rajoute des caractères se situe après dans)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants