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.



Le squelette de recherche
Fonctions à ajouter dans mes_fonctions.php
Vos commentaires
# Le 29 novembre 2005 à 18:23, par pandavilain
En réponse à : Présenter les résultats de recherche comme un « vrai » moteur
Salut tous,
J’ai essayé ce truc, et quoi que je tape dans le champs de recherche, il m’affiche « Désolé, nous n’avons rien trouvé.... »
J’ai bien mis les boucles dans ma page recherche.html de mon squelette. Par contre, je n’ai pas de dossier « Fonctions » à la racine de mon site, alors j’ai enregistré le fichier mes_fonctions.php3 directement à la racine.
*... marche pas...
Help...
# Le 12 décembre 2005 à 18:15, par osilade
En réponse à : Présenter les résultats de recherche comme un « vrai » moteur
il est fonctionnel ton site ? car sauf erreur de ma part il est present par defaut se fichier
Répondre à ce message
# Le 24 août 2005 à 10:58, par Marc
En réponse à : > Présenter les résultats de recherche comme un « vrai » moteur
Bonjour.
Visiblement ca ne marche plus quand on passe à la dernière version de Spip (1.8.
2). Quelqu’un connait-il la solution ?
# Le 4 septembre 2005 à 01:46, par Mouky
En réponse à : > Présenter les résultats de recherche comme un « vrai » moteur
J’ai réussi à le faire fonctionner pour une 1.8.2 en supprimant le filtre majuscules sur les titres...
Par exemple :
//$tab_result["titre"][] = ’(#NOM_SITE’ ;
$tab_result["titre"][] = ’#NOM_SITE’ ;
Cela se trouve à plusieurs endroits dans le code.
Par contre, je ne sais pas pourquoi ça le faisait planter.
# Le 30 septembre 2005 à 11:30, par Marc
En réponse à : > Présenter les résultats de recherche comme un « vrai » moteur
En effet, quand on retire le filtre majuscules, ca fonctionne parfaitement. Merci
Répondre à ce message
# Le 26 juin 2005 à 21:07, par erational
En réponse à : > Présenter les résultats de recherche comme un « vrai » moteur
merci beaucoup pour cet article très complet. il ne manque pas un point dans la boucle ARTICLES ?
$string .= '[(#SOUSTITRE|supprimer_numero|texte_script) ]';# Le 29 juin 2005 à 19:06, par Dadoo
En réponse à : > Présenter les résultats de recherche comme un « vrai » moteur
Effectivement... si un admin peut corriger...
Répondre à ce message
# Le 29 juin 2005 à 12:22, par david
En réponse à : > Extension
Est-ce qu’on pourrait de la même manière récupérer des articles de différents sites syndiqués et puis les classer par date (indépendamment de leur origine sitistique) ?
# Le 29 juin 2005 à 19:05, par Dadoo
En réponse à : > Extension
Oui ça doit pouvoir marcher de la même façon.
Répondre à ce message