Ajout... pour mieux comprendre...
DICTIONNAIRE
Il faut savoir que le moteur de recherche ne cherche pas dans les posts, mais dans un dictionnaire, qui est constitué justement par les mots de 4 à 15 caractères trouvés dans les posts. En fait à chaque fois qu'un mot "nouveau" est posté, il entre dans le dictionnaire, avec une étiquette (numéro), pour prendre moins de place. Donc chaque mot est associé à un nombre, ça c'est pour le dictionnaire.
INDEX
Ensuite est créé l'index. L'index est l'association des mots avec les numéros de posts dans lesquels ils se trouvent....
Je donne un exemple. Si le post n°335087 du forum contient "ceci est un test", seuls les mots "ceci" et "test" seront ajoutés au dictionnaire (s'ils ne le sont pas déjà) avec un numéro, mettons ceci=12015 et test=12016.
Et bien dans l'index, il y aura une entrée qui dit "le mot 12015 se trouve dans le post 335087" et "le mot 12016 se trouve dans le post 335087" (l'association est directe hein : 12015-335087 & 12016-335087)
MOTEUR DE RECHERCHE
Quand vous utilisez le moteur de recherche maintenant, vous tapez une expression, disons que vous cherchez "test".
Le forum va alors chercher ce mot dans le dictionnaire, et va trouver que chercher "test" dans le forum revient à chercher tous les posts qui contiennent le mot 12016.
On cherche alors dans l'index tous les numéros de posts associés à 12016 et on trouve évidemment 335087 (et les autres s'il y en a).
Le moteur affiche alors au choix les résultats
- par message (facile, c'est ce qu'il trouve directement dans l'index)
- par thread (le plus courant) en passant par une étape supplémentaire de recherche du n° de thread associé au n° de post 335087.
Voilà...
Donc si vous avez bien compris ce fonctionnement simple, vous comprenez du même coup :
- le coup de l'astérisque : puisque le moteur de recherche cherche uniquement les résultats dans l'index, et que l'index est construit à partir du dictionnaire qui ne comprend QUE les mots de 4 à 15 caractères, il sera impossible de trouver des posts avec des mots de 3 lettres, même en feintant par un astérisque: dans ce cas de figure, la recherche est effectuée différement : on commence par chercher dans le dictionnaire tous les numéros de mots de 4 à 15 lettres représentées par le masque de recherche, et on fait une recherche globale de tous les numéros de posts contenant au moins 1 des numéros de mots et hop on a les résultats.
- qu'indexer les mots très courts augmente ENORMEMENT le dictionnaire, augmente encore beaucoup plus l'index... et donc quand vous utilisez le moteur de recherche, PEU IMPORTE CE QUE VOUS CHERCHEZ, il faut extraire de l'index les n° de posts correspondant aux numéros de mots de votre expression de recherche, et que donc, plus l'index est énorme, plus ça prend du temps. Dites vous bien qu'ajouter un seul caractère à l'index (les mots de 3 lettres) reviendrait à doubler facilement l'index, et donc à doubler la ressource CPU nécessaire à CHAQUE recherche...
J'espère que vous comprenez mieux maintenant
