Le moteur de recherche de SPIP souffre d’un gros défaut : il recherche successivement dans les différents type d’objet de la base de données : articles, rubriques, brèves, sites référencés etc.
C’est dommage de ne pas pouvoir présenter ces résultats mixés selon leur « pertinence ».
Pour parvenir à ce résultat je vous propose cette contribution qui intègre les contribs « Google Like » et « Score dans le moteur de recherche » de Japanim (celle-ci n’est plus en ligne).
Comment ça marche ?
C’est très simple...
On commence par réaliser chaque boucle de recherche mais au lieu d’afficher tout de suite les résultats on va stocker tous les éléments nécessaires dans un tableau PHP :
URL de la page
Titre de la page
Résumé à afficher (généré par Google Like)
Pertinence (le contenu de #POINTS)
Pertinence en format graphique
Cela donne pour un article :
La pondération des points me sert parce que je trouve que les points de pertinence calculés par SPIP ne sont pas « justes » entre les types de donnés. J’ai donc choisi de sur-pondérer les rubriques au détriment des sites référencés.
Une fois qu’on a ce tableau PHP il suffit de le trier selon la pertinence et de l’afficher de la manière qu’on préfère :
Cela nous affiche bien la liste des résultats triés par pertinence.
Vous pouvez voir un exemple en live sur mon site : www.livres-online.com/recherche.php3?recherche=potter
Dans le fichier ci-joint je n’ai pas mis la boucle sur les brèves mais elle est facile à ajouter en s’inspirant des autres.
Apparemment la version 1.8 permettra de faire une recherche sur les messages de forum, on pourra alors décliner le même principe.
Le temps de tri du tableau PHP sur une page qui n’est pas mise en cache peut générer une charge sur le serveur. Néanmoins la page de recherche n’est en général pas la page la plus appelée du site et le traitement semble suffisamment rapide pour que le gain en fonctionnalité le justifie.



