Présentation
Vous avez déjà remarqué l’option recherche avancée dans votre moteur de recherche favori... elle vous permet de limiter votre recherche à un certain nombre d’options... Malheureusement, votre SPIP en est dépourvu en standard. Cette contribution va remédier à cet état de fait.
Comment ça marche ?
La recherche de SPIP
Tout d’abord, remarquons que la recherche de SPIP (fichier dist/rechercher.html) est basé sur une boucle :
<BOUCLE_articles(ARTICLES) {recherche} {par points} {inverse} {pagination}>
Restreindre la zone de recherche
Il suffit donc d’y ajouter un argument rubrique pour limiter la recherche à la rubrique en question :
<BOUCLE_articles(ARTICLES){recherche}{par points}{inverse}{rubrique?}{pagination}>
Le « ? » permet de conserver le fonctionnement du squelette d’origine (si aucune rubrique n’est précisée). En fait, on utilisera plutôt {branche?}
pour une recherche dans la rubrique et ses sous-rubriques.
Vous pouvez faire l’essai : copier le fichier de la dist dans votre répertoire « squelettes », modifiez le, et lancez une recherche en ajoutant à la fin de la ligne &id_rubrique=1
pour vous limiter à la rubrique 1.
Usage de mot clef
De la même manière, on peut restreindre la recherche à un mot clé que l’on précisera lors de l’appel : {id_mot?}
Selon la durée
Maintenant, cherchons à introduire une condition sur la durée : c’est le critère age qui intervient, mais {age?}
ne marchera pas, à moins que l’on ne veuille une date en particulier. On cherche plutôt à avoir tous les articles parus après une date donnée, donc quelque chose comme {age<#ENV{depuis}}
où depuis a été passé en argument dans la recherche. Mais on perd le comportement initial du squelette (si on ne précise pas l’age en question). J’ai donc choisis une valeur par défaut : {age<#ENV{depuis,1E100}}
en espérant que personne n’aura écrit un article il y a plus de 1E100 jours ;-)
Par points
Enfin, notons que la recherche est triée par points, mais que l’on peut assez facilement utiliser un tri différent : {par #ENV{tri, points}}
en utilisant une variable passée dans l’environnement.
On peut donc facilement ajouter quelques critères à sa recherche SPIP.
Il reste à définir un formulaire pour envoyer la requête facilement...
Un formulaire de recherche avancée
Le formulaire en question est utilisé en lieu et place du formulaire standard dans le squelette de la recherche, à condition que l’option avancee=1
lui ait été envoyée. Il se présente ainsi :
Il a été placé dans le fichier formulaires/recherche-avancee.html afin que vous puissiez le modifier plus facilement et introduire les spécificités propres à votre site, car suivant la configuration de celui-ci, le nombre de rubriques ou de mots clé, vous aurez peut-être à le modifier, au risque d’avoir des menus à rallonge ou des critères qui ne vous satisferont pas.
Et pour y accéder plus facilement, j’ai placé un lien dans le fichier formulaires/recherche.html de la dist.
Finalisation
Mais que serait une bonne recherche sans une bonne présentation ? Pour cela, j’y ai introduit un filtre google_like (voir Google Like et Google Like II) et j’ai transformé les points SPIP en pourcentage plus lisible pour le commun des mortels.
Il ne restait plus qu’à ajouter deux image pour donner un peu de couleurs, faire un fichier de style pour une meilleur intégration dans votre site, mettre une icône dans la barre de recherche standard, un fichier de langue pour les traductions et à empaqueter le tout dans un plugin pour faciliter l’installation...
Et voilà le résultat ...
Remerciements
Merci à J-Ph Guihard pour la validation du code html, css et le passage en SPIP v2.xx, suite aux remarques sur le forum
Dernière mise à jour :
- 04/10/2010 Validation html et css, mise à jour du code pour SPIP 2.xx par J-Ph Guihard
- 19/01/2009 Ajout d’options sur les mots-clés (par groupe ou sans le mot clé...)
- 04/05/2008 Bug dans le fichier recherche_avancee_fonctions.php
- 05/09/2007 Problème d’affichage en version 1.9.3 dev
- 29/08/2007 Gestion des Résultats dans la langue de la requête suite aux remarques d’Abelass.
- 13/08/2007 Première version (1.9.2b)
Discussions par date d’activité
50 discussions
Bonjour
Est-il possible d’etendre la recherche pour inclure les titres et descruptifs des documents joints, sachant que des mots-cle leurs sont associes via le plugin mots partout ?
Merci d’avance
Bonjour,
A priori, les titres des documents sont indexé par le moteur de recherche standard de SPIP (voir plugin Recherche Etendue). Chez moi, cela fonctionne : je trouve les articles sur le nom du document qu’ils contiennent (dans le porte folio)
Je ne sais pas ce qu’il en ait des mots-clé...
@+
jmv
En fait, moi j’ai des documents joints a des rubriques et je voudrai afficher les titres des documents trouves plutot que la rubrique a laquelle ils sont attaches.
J’ai mis une boucle documents dans le fichier recherche mais elle ne donne rien.
C’est bizarre que la recherche trouve des sites syndiques et affiche leur URLs mais pas des documents.
Une suggestion ?
Je me repond
J’ai ajoute un boucle document dans la boucle rubrique sous le titre « Voir aussi les Rubriques » et maintenant j’ai les titres de mes documents.
J’espere que ce n’est pas trop lourd.
Répondre à ce message
Est-il possible de paramétrer soit le plugin, soit le squelette afin de rechercher sur une table externe à SPIP ?
Quelles sont les champs sur lesquels s’effectue l’indexation qui permet ensuite de faire la recherche ? Les champs extra sont-ils indexés pour la recherche ?
Ces deux questions sont légèrement disjointes mais mon besoin est de porter sur SPIP une FAQ dynamique questions / réponses / date de la question.
J’ai tout celà dans une table externe simple à 3 champs + identifiant clé primaire
Mon objectif est d’intégrer dans SPIP un plugin de gestion de questions DP (site syndical)
Essaye le plugin indicizzazione_tabelle
Il faut declarer les tables externe dans mes_options.php et on peut regler les champs a indexer de chaque table (externe ou pas)
Merci beaucoup celà fonctionne
Répondre à ce message
Est-ce qu’il y a une version de ce plugin très intéressant pour spip 1.9.2b ?
Norbert
La version est présentée en 1.9.2b (c’est celle que j’utilise). Elle a été testée en version 1.9.3 dev par all secu.
Dans mon site avec la version 1.9.2b le formulaire n’apparaît pas. Lorsqu’on clique sur « recherche avancée » rien ne se passe.
Norbert
Êtes-vous sûr que votre squelette ne surcharge pas le fichier de recherche (y-a-t’il un fichier squelettes/recherche.html) ? Sinon, c’est ce fichier qui sera utilisé à la place de celui du plug-in...
(voir installation à expliquer svp et Recherche avancée et alternatives)
En effet ! Il y avait surcharge. Etant donné que je suis au début je ne comprenais pas bien le sens de la remarque. J’ai remplacé le fichier squelettes/recherche.html avec celui du plug-in. Le formulaire apparaît et il fonctionne. C’est vraiment très bon. Merci beaucoup.
Norbert
Répondre à ce message
bonjour,
Suite à la mise à jour, il semble qu’il y ait un problème avec spip 1.9.3 dev, le formulaire n’apparait plus comme il faut avez vous une idée de l’origine du problème svp ( résultat)
Désolé, je n’ai pas (encore) installé la 1.9.3...
Mais j’ai peut-être une idée sur le problème qui se pose et j’ai fait une reprise que vous pouvez tester en téléchargeant la dernière version jointe à l’article...
re,
Ca marche nikel avec la 1.9.3 ( y’a juste un petit soucis de mise en page pour la liste des rubriques mais c’est négligeable et à vrai dire ce n’est pas le plus important . Je regardes dès que j’ai un momment)
Merci
Répondre à ce message
Merci beaucoup pour ce plugin très util et facilement adaptable.
Afin d’avoir les résultats dans la langue correspondante (celle de la page où la requête est faite)
j’ai rajouté dans recherche_avancee/formulaires/recherche_avancee.html
<input name='lang' value='#ENV{lang}' type='hidden' />
après
et
remplacé dans recherche_avancee/formulaires/recherche.html
par
et j’ai évidemment rajouté dans recherche_avancee/formulaires/
les fichiers de langues necéssaires : http://www.protectionline.org/plugi...
Voir : http://www.protectionline.org/spip....
Rainer
Bonjour,
Ce plugin est-il compatible avec Google Ajax Search ? Autrement, comment faire pour utiliser le moteur de recherche google à la place de la recherche Spip ? J’ai remarqué que mon site est plus rapide avec le moteur Google...
A priori, le plugin Google Custom Search est totalement indépendant du formulaire de recherche SPIP... Ce sont donc deux façon de faire différentes... à vous de choisir
Je l’ai intégré à la v0.2
merci jmv
Répondre à ce message
Bonjour,
comment peut on retirer des groupes de mot clé ou simplement des mots clé dans la recherche avancée ?
Merci
Recopiez le fichier
formulaires/recherche-avancee.html
dans votre répertoiresquelettes/formulaires
et modifiez la boucle affichant les mots-clés (ligne 61) :par :
Les mots-clé du groupe xx ne s’afficheront plus...
Voir également autres critères de sélection des mots-clés sur : http://www.spip.net/fr_article909.html
De la même manière, en modifiant la boucle des rubriques (
<BOUCLE_surrub(RUBRIQUES){racine}>
) vous pouvez étendre la recherche à des rubriques spécifiques, etc.Répondre à ce message
Bonjour !
Super ce plugin.Cependant le temps de réponse des recherches est très long > 30 secondes.
D’ou pourrait venir le problème ? Sans le plugin les réponses sont rapides.
Merci
Nicolas
Bonjour,
La recherche avancée fait plus de calcul que la recherche normale (calcul des points, affichage des mots clés, filtre google)... Peut-être que cela vient de là... (30 secondes me paraît beaucoup).
Utilise la variable var_profile (à ajouter en fin de ligne de dans le navigateur :
spip.php?page=recherche&...&var_profile
) pour afficher les temps de calcul dans les boucles et voir d’où vient le problème. Sinon, tu peut désactiver certaines fonctionnalités dans le fichier recherche.html...As-tu une url à donner ?
@+
jmv
Répondre à ce message
bonjour,
tout d’abord merci pour ce plugin bien utile .
J’ai un petit bug avec spip 1.9.3dev+ alternatives :
- DOUBLE OCCURENCE HEAD
- JQUERY fonctionne mal pour les autres plugins
Sinon j’essaye de l’intéger dans une balise div pour mon site et ca force la dist ?
Est-ce normal ?
Enfin puis-je appeler le formulaire de recherche par une balise (par exemple pour afficher le formulaire de recherche avancée de la page d’accueil) ?
Merci d’avance et encore félicitation pour le plugin
(Ps : pas de lien car du coup le plugin n’est pas encore activé car en test)
Bonjour,
je n’ai (encore) pas testé la 1.9.3, désolé, mais a priori, le plugin ne fait que surcharger la recherche de SPIP et introduire un fichie css dans le head...
Je n’ai pas jugé bon de créer de balise pour intégrer le formulaire, il faut donc faire un INCLURE :
merci pour la réponse apparamment ca a l’air de fonctionner en rajoutant compat193 pour le rendre compatible avec les anciennes versions . Cependant, pour l’include, il me manque le bouton d’envoi ?!! Et est-ce normal que je n’arrives pas à l’adapter à alternatives mais seulement avec la dist ?!!
Merci d’avance
Attention, le squelette alternative surcharge recherche.html qui sera prioritaire par rappport au plugin... Remplacez celui du répertoire squelettes par celui du plugin ou reprenez celui d’alternatives en fonction du plugin (rajouter le include ligne 28-37 du plugin). Une autre solution, je pense qu’on peut mettre une majuscule au répertoire du plugin Recherche avancée : il sera alors avant le plugin alternatives (
R<a<r
) dans la liste des plugins (mais je n’ai pas testé la compatibilité).Bouton d’envoi manquant : peut-être un pb dans un css... (un hidden qui traine dans un .formulaire_spip .bouton...)
bonjour,
j’ai résolu le problème du bouton caché mais il me reste un dernier soucis : sous Internet Exploreur, l’affichage du formulaire est aléatoire et dépasse ma mise en page . J’ai bien essayé de modifier les fichiers du formulaire pour forcer la taille des colonnes à 350 au lieu de 500 mais rien n’y fait.....
Auriez-vous une petite idée svp ?
Merci d’avance
Répondre à ce message
Bonjour
Je crois qu’Un minimum serait de mettre un p’tit paragraphe sur « comment installer ce plugin » qui est un peu particulier...
- faut-il remplacer le fichier rechercher.html d’origine par celui du plugin, aprés l’avoir installé ?
- si en plus un squelette était dèjà installé, comment les fichiers formulaires du squelette vont se comporter ?
...etc
Dommage que n’ayant pas réponses à ces questions, j’ai dû désinstaller ce plugin qui me semble trés interessant. Le lien « recherche avancé » m’affiche une magnifique page toute blanche.
Dans l’attente de pouvoir utiliser votre magnifique travail... merci.
Comme indiqué dans l’article, le plugin surcharge les fichiers recherche.html et formulaire/recherche.html de la dist...
Si vous les avez déjà surchargés dans un squelette, ce sont les votres et non ceux du plugin qui seront utilisés... normal, c’est le principe de base des squelettes de pouvoir être personnalisés...
Vous avez donc le choix de ne pas les surcharger (les supprimer du squelette) ou recopier ceux du plugin dans votre dossier squelettes... et en profiter pour les modifier si le cœur vous en dit...
Répondre à ce message
Bonjour,
J’utilise ce plugin (merci !) pour forcer la réindexation de mes nouvelles tables. Est-il nécessaire de rajouter les éléments au tableau $INDEX_elements_associes ? Si je ne fais pas, sur la page ?exec=admin_index le bargraph des tables qui n’ont pas été définies reste sur « Indexation de la table non configurée »...
Merci d’avance,
A+
Cyril
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |