[phpBB] Optimiser le système de recherche

cybervince

WRInaute impliqué
C'est un constat que je fais depuis pas mal de temps, la base de données de phpBB devient vite énorme lorsque les posts arrivent, et quand on regarde ce qui prend le plus de place, c'est les tables servant à faire les recherches.

Pour ma part ca donne ca:

Code:
phpbb_posts_text:               4,2 Mo 
phpbb_search_wordlist:         1,3 Mo 
phpbb_search_wordmatch:     9,4 Mo

Le principe serait de vider les tables servant aux recherches et de mettre un index en FULLTEXT sur le contenu des posts ce qui a pour conséquence de doubler la taille de la table.

Dans mon cas, je gagnerai 10-4 soit 6 Mo sur la base.

Ensuite pour effectuer les recherches, j'utiliserai la fonction MATCH de MySQL qui me retournerai les posts jugés les plus pertinents (il se base sur les différents mots contenus dans le post, donc si on demande de rechercher un ou plusieurs mots, il les trouvera).

J'aimerai avoir vos avis et vos expériences par rapport à cela.
Si certains ont déjà tenté ce truc, si vous voyez des régressions qu'il pourrait y avoir...
 

cybervince

WRInaute impliqué
Ohax a dit:
Perso je vide régulièremment ces tables sinon je m'en sort plus...
C'est aussi ce que je compte faire, mais il faut admettre que pouvoir rechercher un post datant d'avant guerre est bien pratique quand on en a besoin, et si tu vide la table, et bien les recherchent partent de zéro, ce qui est un peu dommage, car c'est avant tout pratique pour les vieux posts.
 

cybervince

WRInaute impliqué
Oui j'ai déjà la boite de recherche Google, mais ca nécessite effectivement d'avoir un forum ayant tout ses posts référencés, et je ne suis pas certain que ca soit bien le cas.
Alors qu'avec cette méthode même les posts nouvellement créés et non référencés sont accessibles.

Disons que le post était plus destiné à améliorer le système de recherche en l'allégeant, que de contourner le problème.

Je me demande en fait si y'a pas une fonction miracle qui permettrai de faire une recherche dans la table sans avoir besoin de rajouter cet index en fulltext qui est indispensable à la fonction MATCH.
 

Suede

WRInaute passionné
l'avantage de la recherche de phpbb est de chercher par forum et utilisateurs.
En utilisant le fichier stopwords, tu peux déjà vider ta table de pas mal de mot.

François
 

cybervince

WRInaute impliqué
Suede a dit:
l'avantage de la recherche de phpbb est de chercher par forum et utilisateurs.
En utilisant le fichier stopwords, tu peux déjà vider ta table de pas mal de mot.

François
Ca sera toujours possible de faire une recherche pas forum, vu que ca n'est pas une information qui est supprimée de la base.
Juste besoin de faire une jointure au niveau SQL pour travailler sur un forum et/ou un utilisateur.
 

sgaze

WRInaute occasionnel
Pour l'instant j'ai pris le parti de supprimer dans phpbb_search_wordmatch les occurences d'une liste comme celle là. Mais c'est lourd...

'alors', 'au', 'aucuns', 'aussi', 'autre', 'avant', 'avec', 'avoir', 'bon', 'car', 'ce', 'cela', 'ces', 'ceux', 'chaque', 'ci', 'comme', 'comment', 'dans', 'des', 'du', 'dedans', 'dehors', 'depuis', 'deux', 'devrait', 'doit', 'donc', 'dos', 'droite', 'début', 'elle', 'elles', 'en', 'encore', 'essai', 'est', 'et', 'eu', 'fait', 'faites', 'fois', 'font', 'force', 'haut', 'hors', 'ici', 'il', 'ils', 'je juste', 'la', 'le', 'les', 'leur', 'là', 'ma', 'maintenant', 'mais', 'mes', 'mine', 'moins', 'mon', 'mot', 'même', 'ni', 'nommés', 'notre', 'nous', 'nouveaux', 'ou', 'où', 'par', 'parce', 'parole', 'pas', 'personnes', 'peut', 'peu', 'pièce', 'plupart', 'pour', 'pourquoi', 'quand', 'que', 'quel', 'quelle', 'quelles', 'quels', 'qui', 'sa', 'sans', 'ses', 'seulement', 'si', 'sien', 'son', 'sont', 'sous', 'soyez sujet', 'sur', 'ta', 'tandis', 'tellement', 'tels', 'tes', 'ton', 'tous', 'tout', 'trop', 'très', 'tu', 'valeur', 'voie', 'voient', 'vont', 'votre', 'vous', 'vu', 'ça', 'étaient', 'état', 'étions', 'été', 'être'
 

cybervince

WRInaute impliqué
Enfin pour en revenir au sujet, je cherchais plus à avoir des avis et des éventuels retour d'expérience par rapport à l'utilisation de la fonction MATCH de MySQL sur des gros phpBB, car en testant sur mon serveur chez moi, en fesant directement la requête en base ca m'a l'air assez rapide. (base avec 11000 messages)
 

Discussions similaires

Haut