SPIP Recherche Multicritères


Présentation

Recherche multicritères par mots clés, par dates, par rubrique dans les articles de SPIP :

Voici le nouvelle version de la contribution proposée sur spip-contrib.net  : http://www.spip-contrib.net/Recherche-multi-critere-par-mots

La recherche multicritères par mots-clés permet de rechercher des articles auxquels nous avons attribué des mots-clés.

Attention : il est impératif, pour voir fonctionner cette contrib, d’avoir créer au préalable des mots-clés dans l’interface privée et d’associer certains de ces mots-clés ou tous à des articles.

Cette contribution a 4 objectifs :

- Le premier est de proposer une recherche multi-critère par mots-clés sur les articles d’un site spip, pour cela on attribue des groupes de mots-clés à des rubriques à l’aide d’un fichier de configuration (AddGroupmotDsRub.php).

On peut appliquer des groupes différents de mots-clés à différentes rubriques. Exemple : A la rubrique 1, j’attribue les groupes de mots-clés légumes, fruits. A la rubrique 2, j’attribue le groupe types de légumes et le groupe légume, à la rubrique 3, j’attribue le groupe vins et le groupe fromage...

Je peux donc attribuer n’importes quels groupes à n’importe quelle rubrique et limiter le résultats aux articles de la rubrique. S’ajoute à cela la possiblité de limiter les résultats à des critères de dates : articles de moins de 7 jours, 1 mois, 3 mois, 12 mois...

  • La recherche pouvant être exclusive, l’article, pour apparaître dans les résultats de la recherche, doit avoir tous les mots-clés qui lui sont liés.
  • La recherche peut se faire par et/ou, les pages de résultats présenteront les articles par nombres de mots clés trouvés.

- Le second objectif est de permettre de placer dans n’importe quelle page de rubrique d’un site spip une recherche multicritère avec les groupes de mots-clés différents que l’on veut.

- Le troisième est de pouvoir trier les articles par dates

- Le quatrième est de pouvoir limiter la recherche à une rubrique


Démo Recherche multicritères par mots-clés SPIP

http://www.netdeveloppeur.com/SPIP_Video/rubrique.php3 ?id_rubrique=4

Démos - ancienne version :

Site STI de l’académie d’Orléans-Tours :
http://sti.ac-orleans-tours.fr/spip/-Ressources-Pedagogiques-.html

Portail Génie Mécanique de l’académie de Caen :
http://pgm.discip.ac-caen.fr/cherchresult.php3

Durzy - Lycée Scientifique et Technologique :
http://wwwphp.ac-orleans-tours.fr/lyc-durzy-villemandeur/adv-search.php3

Coordination SUD, fédération des ONG françaises :
http://www.coordinationsud.org/rubrique.php3 ?id_rubrique=53

Peuples Solidaires :
http://www.peuples-solidaires.org/rubrique1.html

Bien évidemment la recherche se fait sur les mots clés du groupe et non sur le groupe pour faire une recherche sur le groupe il faut sélectionner tous les mots clés du groupe.


Installation

Vous trouverez ci-joint 6 fichiers :

- AddGroupmotDsRub.php :
Permet d’ajouter un mot ou plusieurs groupes de mots-clés aux rubriques de votre site, il permet aussi d’effacer un ou plusieurs groupe de mots-clés attachés à une rubrique.

- requete.php :
Crée la table spip_rubriques_groupes dans mysql automatiquement, ce fichier s’autodétruit une fois la table créée.

- inc-search.php3 et inc-search.html :
C’est le formulaire de recherche à inclure dans votre squelette rubrique.html.

- searchresult.php3 et searchresult.html :
C’est la page de resultat, les résultats sont présentés par nombre de mots-clés.

1ème étape :

Placer dans votre répertoire ecrire les fichiers :

- requete.php
- AddGroupmotDsRub.php

Placer dans votre site SPIP à la racine, le fichier :

- searchresult.php3

Placer dans votre dossier squelettes ou dist :

- inc-search.php3
- inc-search.html
- searchresult.html

2ème étape :

Il suffit de faire un include dans votre squelette rubrique.html, là où vous souhaitez voir apparaître le formulaire de recherche multicritères.

Ajouter le code suivant :


<INCLURE(inc-search.php3) {id_rubrique}>

Vous pouvez modifier l’affichage des groupes de mots-clés, par défaut l’affichage se fait sur 2 colonnes, vous pouvez afficher les groupes de mots-clés sur une seule colonne ou sur plusieurs colonnes.
Pour cela, il suffit de modifier le fichier inc-search.html. Chercher la ligne 31 et remplacer : $nbcol = 2; par le nombre de colonnes souhaitées.

3ème étape :

Créer la table mysql : spip_rubriques_groupes

Pour cela, aller à cette adresse :

http://www.monsitespip.org/ecrire/requete.php

La table est alors créée et vous êtes redirigé vers la page AddGroupmotDsRub.php, qui vous permet de choisir les groupes de mots-clés à associer à telle ou telle rubrique. Attention, vous devez vous être connecté à l’espace privé pour pouvoir faire les modifications.

Si la table n’a pas pu être créée automatiquement, exécuter cette requête à l’aide de phpmyadmin sur mysql :

Allez ensuite à l’adresse :

http://www.monsiteweb.fr/ecrire/AddGroupmotDsRub.php à l’aide de votre navigateur web et selectionnez les groupes de mots-clés que vous souhaitez attacher à une rubrique.

Vous retrouverez dans le menu déroulant des rubriques le champs multisearch, c’est en fait la rubrique 0 qui n’est attachée à aucune rubrique. Je n’ai pas fini ce développement qui permet d’avoir une recherche multicritère en dehors du squelette rubrique, donc pour le moment on peut ajouter la recherche multicritères uniquement à des rubriques.

Et pour finir, allez dans la rubrique où vous avez décidez de proposer une recherche multicritères et testez.

Cette contribution a totalement été revue, elle a été testée sur SPIP 1.8.2.

Elle utilise maintenant les fichiers de connection de SPIP, elle est donc secure.

Seul l’administrateur du site peut accéder au fichier AddGroupmotDsRub.php.

Autres avancées, on ne modifie plus du tout le noyau de SPIP et la table supplémentaire est créée automatiquement.

Nouveautés :

- Recherche "et" exclusif ou et/ou au choix de l’utilisateur

- Possibilité de limiter la recherche à la rubrique en cours

- Recherche par date d’articles

- Utilisation de la méthode $_POST au lieu de $_GET pour transmettre les id des mots-clés à la page de résultats

- Correction du bug des titres d’articles qui possèdent des numéros pour trier les articles, ces numéros apparaissaient dans les titres des articles dans les résultats.

- Dans l’interface d’ajout de gestion de la recherche multicritères, la navigation dans les rubriques a été revue les rubriques et les sous rubriques sont maintenant bien classées

Des questions, des soucis d’installation, des suggestions... Merci d’utiliser le forum associé à l’article.




Recherche multicritères par mots clésRecherche multicritères par mots clés

27 commentaires

  • > SPIP Recherche Multicritères

    10 décembre 2005, par Webmaster Net Developpeur

    Si quelqu’un a le temps de tout mettre en css, merci de faire un retour, je vous associerai à cette contrib.

    Paul

    > Net developpeur : Création de sites web SPIP : http://www.netdeveloppeur.com

  • > SPIP Recherche Multicritères-votre sommaire de cet excellent article

    14 décembre 2005, par alex

    Bonjour, Je viens vers vous pour vous féliciter de cette contrib d’une part, et pour vous demandez conseil d’autre part. En fait c’est votre sommaire et le découpage en pages qui m’intéresse. Je ne suis pas parvenu à avoir de l’info concernant cette contribution (disponible sur spip-contrib). Pourriez vous simplement m’expliquer comment personnaliser le positionnement et l’apparence des numéros de page et surtout du sommaire.

    Merci par avance

    ALex

    • 16 décembre 2005, par Webmaster Net Developpeur

      Merci pour ton commentaire,

      Concernant la contribution, Découper un article en plusieurs pages et lui attribuer un sommaire, as-tu posé tes questions dans le forum associé à cet article sur spip-contrib.net ?

      Je veux bien t’aider mais il me faut plus de précisions concernant les soucis que tu rencontres lors de l’installation de cette contribution.

      D’ailleurs pour en faire profiter tout le monde le mieux est de poster tes questions sur le forum de l’article concerné.

      Paul

      > Création sites web SPIP : http://www.netdeveloppeur.com

    • 12 janvier 2006, par Alex
      Bonjour, Y aurait t-il moyen à partir de cette contrib de créer une page sur un site spip, se nommant par exemple recherche avancée, exclusivement dédiée à cette forme de recherche sur les keywords de toutes les rubriques à la fois. Merci Alex
    • 12 janvier 2006, par Alex
      Oups désolé je n’avais pas vu que c’était en cours de dev ... A bientôt alors .. Merci
    • 17 janvier 2006, par Webmaster Net Developpeur

      Salut,

      Pour avoir une recheche multicritères par mots-clés indépendante d’une rubrique particulière, tu peux tout simplement créer une rubrique que tu nommes recheche multicritères, puis tu crées un article dans cette rubrique pour la faire apparaître dans l’espace public. Tu peux ensuite lui attribuer tous les groupes de mots-clés que tu souhaites.

      Paul

  • > SPIP Recherche Multicritères

    18 décembre 2005, par kent1

    Excusez moi de cette question peut être inopportune mais est il indispensable d’ajouter des mots clés aux rubriques et donc de l’utilisation des 2 fichiers concernant cette partie...

    Je n’ai pas encore essayé la contrib faute de temps mais elle m’intéresse énormément !!!

    Je me lancerai certainement dans la CSSification de la chose... contactez moi par mail pour mettre cela au point...

    • 19 décembre 2005, par Webmaster Net Developpeur

      Salut,

      Je t’avoue que je ne comprends pas bien la question, il n’y a pas besoin d’ajouter des mots-clés aux rubriques, mais uniquement aux articles.

      Tu attribue des mots-clés aux articles et la recherche se fait à partir de la ou des rubriques où tu as décidé d’inclure le formulaire de recherche. Il existe un fichier AddGroupmotDsRub.php qui te permet de choisir à quelle rubrique tu affectes le formulaire de recherche et quels sont les groupes de mots-clés que tu ajoutes dans ce formulaire et cela pour chaque rubrique.

      Concernant ta proposition de tout passer en css, je suis très intéressé, mais tu as l’air aussi débordé que moi, donc quand tu as du temps libre, dis-le moi, on se fera ça ensemble.

      Merci,

      Paul

      > Création sites web SPIP : http://www.netdeveloppeur.com/

  • > SPIP Recherche Multicritères

    23 décembre 2005, par dadou
    un seul mot : MERCI !
    • 23 décembre 2005, par Webmaster Net Developpeur

      Ca fait plaisir, merci à toi.

      Paul

  • > SPIP Recherche Multicritères

    25 janvier 2006, par mamat

    Bonjour,

    D’abord merci pour cette contrib qui vient combler l’une des lacunes de SPIP. J’aimerais savoir si il est possible de restreindre les resultats à simplement un nombre de critères minimum.

    Je m’explique : Aujourd’hui sur une recherche sur les criteres c1+c2+c3 on a comme resultat :
    C1+C2+C3
    C1+C2
    C1+C3
    C1
    C2
    .....
    Ou C1+C2+C3 simplement.

    Mais est il possible de restreindre la recherche a par exemple tout les articles contenant deux mots clefs donc exlure les resultats n’en contenant qu’un.

    J’espere me faire comprendre. Merci d’avance

    Mamat

    • 13 février 2006, par Webmaster Net Developpeur
      Oui c’est possible mais quel est l’intérêt ?
    • 22 février 2006

      L’interet et d’exclure les resultats trop vagues (1 seul critère) pour n’avoir que des resultats ayant un minimum de critères determiné. J’espère que je me fais bien comprendre ? Merci d’avance

      Mamat

    • 14 juin 2006, par Sketchy

      J’en viens à m’inquiéter sur mon état de santé. J’aimerais effectivement pouvoir obtenir le même résultat que ce que souhaite mamat, et j’étais persuadé que la solution se trouvait dans le "et" exclusif ou le et/ou. Pire, j’ai même la certitude de l’avoir vu fonctionner parfaitement hier soir. Mais bizarrement, ce matin, plus rien ne marche.

      Alors rassurez-moi et dites-moi que je n’ai pas eu d’hallucination...

    • 14 juin 2006, par Sketchy

      Hum... bon dans le genre commentaire inutile, j’ai fait fort.

      Il n’empêche que j’ai impression étrange que tout fonctionnait parfaitement hier. Aujourd’hui, le et/ou fonctionne, mais le pb vient du "et" exclusif. Il ne me trouve jamais de résultat alors que bizarrement, mes mots clés sont bien liés à la rubrique et aux articles qui la compose. Qui plus est, j’ai modifié la page inc-search.html hier soir, mais pensant que l’erreur venait de là, j’ai tout réinstallé et le pb perdure.

      Et très sincèrement, j’ignore d’où ça peut provenir...

  • > SPIP Recherche Multicritères, problème d’installation

    11 avril 2006, par Max

    Bonjour,

    J’espère que le sujet n’est pas mort et que quelqu’un pourra me répondre. J’ai essayé d’implémenter votre conribution à un site SPIP sans succès. Je suis revenu à la version 1-8-2 sans squelette pour être sûr que cela venait de moi.

    Mon problème est le suivant, lors de l’affichage des résultats (searchresult.php3), il ne parvient pas à faire l’inclusion correctement du reste du site, le code source commence directement à table et je n’ai plus ni menu ni brèves, etc.

    Veuillez m’excuser si ces difficultés viennent de mon incompétence mais j’ai beau retourner le problème dans tous les sens, je n’ai pas trouvé de solution.

    Merci de votre aide.

    • 11 avril 2006, par Webmaster Net Developpeur

      C’est normal, il faut que vous ajoutiez vous-même votre code html avant et après le code de résultat que je propose.

      Cela se fait par un inclure ou directement en ajoutant le code dans le fichier searchresult.html.

      Regardez un exemple ici, il faut afficher la source : http://www.netdeveloppeur.com/searchresult.html

      J’inclue un fichier debut.php3 qui appelle debut.html dans lequel se trouve tout le code de mon header, menu... Au milieu j’ai mon code de résultat avec le tableau des résultats.

      J’inclue aussi un fichier fin.php3...

      Une lecture de cet article peut aider à la compréhension des includes dans SPIP

      Vous pouvez aussi mettre directement le html dans cette page searchresult.html

      Regardez le code source de cette page où à l’époque, j’avais mis le html directement dans cette page :

      http://www.coordinationsud.org/searchresult2.html

      Paul

    • 11 avril 2006, par Max

      Je vous remercie beaucoup. Je n’avais effectivement pas compris, je pensais que le code reprenait l’architecture du squelette.

      Merci pour votre réponse et cette excellente contribution !

  • > SPIP Recherche Multicritères

    26 avril 2006, par elise

    Bonjour,

    merci pour cette contribution qui m’aide enormement ! Je dois mettre des mots clefs sur des articles. J’ai 4 grands groupes :
    - fournisseur
    - domaine
    - technologie
    - validation

    Pour chaque groupes la liste des mots peut varier donc j’ai créé une table spip_fournisseur ... Ensuite je fais une jointure sur spip_fournisseurs_articles (à la manière des auteurs). Maintenant je voudrais pouvoir interroger ma base en fonction de mes critères. Je vais mettre les mains à la pâte... Ensuite il faut que je permette à l’auteur de mettre plusieurs mots clef par groupe. Donc encore du travail. Qu’en pensez-vous ? Cela vous parait faisable ? Elise

  • > SPIP Recherche Multicritères

    11 mai 2006

    bonjour,

    merci beaucoup pour le script ! il fonctionne très bien !

    une précision, les id des mots clés ne sont pas envoyés dans la page des résultats de recherche donc quand je clique sur un résultat je ne peux plus revenir en arrière.

    pourtant j’ai bien la dernière version, je ne comprends pas...

  • > SPIP Recherche Multicritères

    3 juin 2006, par -

    salut,

    les contributions pour spip présentes sur ce site sont toujours d’excellentes qualité (lecteur MP3, lecteur video, recherche multicritère). à chaque fois, c’est un plaisir : alliance d’efficacité, de simplicité de mise en oeuvre et d’interface simple et transparente.

    J’auraai une petite question ce pendant : est il possible de designer la page search result du script "recherche multicritère". Est ce qu’elle fonctionne comme une page spip classique, avec la possibilité d’utiliser un squelette avec boucles spip ?

    Je te pose cette question parce que j’ai ouvert la page "searchresult.html" et je n’ai trouvé qu’un script php. Pour "modeler" la page "searchresult", des compétences avancées sont-elles indispensables ?

    Encore une fois merci et à bientot

  • > Classé les mots clés par ordre alphabétique

    2 août 2006, par Infogm
    Bonjour j’aimerais pouvoir classer le mot clé sur la page recherche multicritère non pas par id_mot mais par le titre du mot clé... or, sur la précédente contrib’, posté sur spip-contrib, quelqu’un évoquait cette possibilité en remplacer "order by ...id_mot,..." par "order by spip_groupes_mots.titre, spip_mots.titre" dans les $sql. Or, dans la nouvelle version de la contrib, je ne trouve pas de order by.. à moins que je sois aveugle.. En tout cas, merci de me dépanner et d’une façon générale, merci pour cette contrib’, très utile, très agréable. Cordialement Christophe

    > Inf’OGM : http://www.infogm.org

    • 2 août 2006, par Infogm
      Je m’autoréponds pour ceux que ca intéresse... il faut changer la ligne $sql .= "group by spip_groupes_mots.id_groupe,spip_groupes_mots.titre, spip_mots.id_mot,spip_mots.titre" ; par $sql .= "group by spip_groupes_mots.id_groupe,spip_groupes_mots.titre, spip_mots.titre,spip_mots.id_mot" ; tout simplement ;) Maintenant, j’aimerais bien pouvoir exclure le premier mot clé... car il me sert sur mon site... mais il est redondant par rapport au titre du groupe de mot clé.. Je cherche mais si quelqu’un a une idée, qu’il n’hésite surtout pas. Cordialement Christophe

      > Inf’OGM, page recherche multicritère : http://www.infogm.org/rubrique.php3? (...)

  • > SPIP Recherche Multicritères

    15 août 2006, par marjo95125

    Bonjour,

    Je viens de voir votre travail et c’est tout à fait ce dont j’avais besoin. Ce pendant je suis sur la version 1.9 de Spip et donc, tout à changer. Allez-vous faire une mise à jour pour la nouvelle version ?

    En vous remerciant, Merci pour votre travail !

    Jo

  • > SPIP Recherche Multicritères

    9 janvier 2007, par abdellah31
    Bonjour, Merci pour cette contribe qui a mon gout n’a pas assez d’echo sur des sites "SPIPIEN : contrib, zine,...". Ma question est la suivante : Est ce que c’est possible d’ajuoter au formulaire un champ de saisie de texte ?? "comme celui du moteur de base de SPIP" On retrouve généralement ce genre de champ dans les moteurs de recherches (mot clef, "ce n’est pas au sens SPIP"). Merci pour votre reponse
    • 9 janvier 2007, par abdellah31
      Je vais essayé de me repondre en qlq sorte a moi meme : le moteur de recherche multicritere affiche juste les articles qui contiennent l’ensemble des mots clefs selectionnés dans les différents champs. l’idée c’est de rechercher dans les résultats trouvé ceux qui possede le mot saisi dans le champ libre et d’afficher le résultat qui correspond à : mots clefs + mot champ libre. sinon si le champ libre est vide alors il ne prendera pas en compte ce dernier et le moteur multicritere fonctionne tel qu’il est présenté actuellement. voila voila, mais le probleme c’est que je ne sais pas traduire cette idée sous forme de code alors HELP PLEASE
  • > SPIP Recherche Multicritères

    8 juin 2007, par tithom
    Bonjour, est ce qu’une mise à jour a été prévu ??? l’arborescence de SPIP 1.9.2 a pas mal changé et je n’arrive pas à faire marcher la Recherche Multicritères. Merci d’avance pour toutes aides