Bonjour,
j'ai déjà intégré le système d'autocomplétion de JQuery UI dans un dictionnaire. Je vais donner un exemple (pour tout le sujet, ce sera la même bestiole) pour que ce soit plus parlant : la limule. Dans cette partie de mon site d'aquariophilie, la recherche spécifique au dictionnaire se contente, pour l'autocomplétion, de rechercher les expressions contenant les lettres tapées dont l'un des mots de l'expression commence par la première lettre tapée (on suppose que la première lettre est obligatoirement valide). Ca, c'était facile.
Il y a une autre partie du site dans laquelle je souhaite intégrer l'autocomplétion : il s'agit d'une base de connaissance des espèces aquatiques (poissons, plantes, algues, crevettes, escargots, coraux, etc). Mais l'algorithme pour déterminer le meilleur résultat à proposer (comme Google Suggest ou Instant) devient un peu moins courtois à défaut d'être sournois...
En effet, depuis les débuts du site, chaque recherche par le champ de recherche spécifique à cette partie du site est enregistrée : j'ai donc un fichier de 800.000 recherches (le critère uniquement). Et bien, je n'ai pas été foutu de déterminer quoique ce soit avec ça tant c'est hétéroclite!
En fait, il y a 3 paramètres à prendre en compte. J'en reviens à ma limule citée au début. Le mot "limule" est le nom commun (on dit précisément le nom vernaculaire) de la bestiole, mais son nom scientifique est Limulus polyphemus. Le taxon (le nom scientifique) est composé de 2 parties (je simplifie car ça peut être plus compliqué, mais je vais outrepasser certaines difficultés rares) : le nom de genre "Limulus" et le nom d'espèce "polyphemus".
Je dispose bien sûr d'un accès au trois champs : nom de genre, nom d'espèce, nom vernaculaire. Je dispose également du champ 'nombre de lectures' et de la date de création de l'élément (ça pourrait permettre une pondération de popularité en fonction d'un nombre de lecture par jour par exemple...). Le tracking installé sur la recherche montre que 40% cherchent un nom commun (souvent le top 10 des espèces présentes en aquarium), 35% un nom de genre et 25% un nom d'espèce. On peut ajouter que le nom vernaculaire est finalement assez peu renseigné (il ne l'est que pour des espèces communes), soit sur seulement 25% des éléments.
La question vient : comment, depuis l'entrée de lettres, sélectionner les "n" résultats les plus valables?
Si le critère de recherche est "lim", je dois pouvoir proposer "Limulus" et "limule" (et enlever les doublons de résultats), mais actuellement, le système de recherche déjà en place me propose un tas de résultats (cf. zones "genres", "espèces", "noms communs"). Parmi tous ceux-ci, il faut que je réduise à une liste plus petite et bien organisée.
Comment s'y prendre?
Partager