SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 266 visiteurs en ce moment

Accueil > Navigation > Recherche > Indexation > Le plugin Indexation

Le plugin Indexation

15 septembre 2007 – par Fil – 32 commentaires

8 votes

Attention, cette page de documentation est incomplète... Vous devrez donc découvrir et expérimenter par vous-même. Des liens à la fin permettent d’accéder à d’autres documentations.
Soyez sympa, pensez à revenir compléter cette page ;-)

Le plugin Indexation permet d’organiser l’indexation du contenu des articles pour accélérer le moteur de recherche.

Nota SPIP-Contrib : Ce plugin n’est plus en développement actif, les efforts se tournant vers le plugin Fulltext qui reprend le concept, mais de façon beaucoup plus performante.

À propos du plugin

-  Il exploite le mode FULLTEXT SEARCH IN BOOLEAN MODE de MySQL, cf. http://dev.mysql.com/doc/refman/5.0...
-  Avec ses extracteurs, ce plugin permet d’indexer les fichiers PDF etc.
-  un tableau de bord exec=admin_index permet de voir la progression de l’indexation
-  une balise #EXTRAIT permet d’afficher dans les boucles {recherche} un extrait du texte contenant les mots recherchés ; et cela y compris pour les documents indexés (PDF, rtf etc).

Conditions de compatibilité :
-  SPIP SVN révision >= 10182 [1]
-  MySQL >= 5 ? ou en tout cas 4 avec une option utf-8 (à préciser)

Installation

Ce plugin est encore en développement aussi vous pouvez le récupérer :
-  soit via un client SVN, Plus d’explications ici
-  soit au travers des paquets zip d’ensemble du site miroir > plugins/ plugins_stable.zip

L’installation se déroule ensuite comme pour tous les autres plugins, cf. http://www.spip.net/fr_article3396.html

Raccourcis de recherche

Recopier ici la doc de MySQL ; trouver une manière sympa d’expliquer les subtilités de la syntaxe :

-  +Allô ; exiger le mot Allô ;
-  -Allô ; refuser le mot Allô ;
-  ~Allô ; minorer le score des articles contenant le mot Allô ;
-  Allô Habibi ; les articles contenant Allô ou Habibi ou les deux mots ;
-  "Allô Habibi" ; les articles contenant la phrase "Allô Habibi" ;
-  (>Allô <Habibi) ; les articles contenant Allô ou Habibi, en privilégiant ceux qui contiennent Allô ;
-  etc.

Fonctionnement

Chaque fois qu’un article est modifié, son texte, nettoyé des raccourcis typographiques (il y a un pipeline dédié, pour les plugins qui veulent en ajouter), est recopié dans la table spip_indexation. Les données associées (nom des auteurs, titre des mots-clés etc) sont recopiées aussi. On exploite ensuite une requête MySQL FULLTEXT pour fouiller cette table spip_indexation

TODO

-  proposer une balise #EXTRAIT qui afficherait un extrait pertinent (on l’a dans spip_indexation).
-  rétablir les fonctions de configuration de l’indexation (recherche avancée, indicazzione tabelle) ; la structure de ce qu’on met dans spip_meta est identique à celle d’avant (bien qu’on n’utilise plus les poids, du moins pour le moment), ça devrait faciliter le retour de ces fonctions
-  dans admin_index lister toutes les table éventuellement indexables avec une case à cocher
-  retomber sur la recherche inc/rechercher pour les tables non indexées (ex : spip_syndic_articles)
-  optimiser en supprimant les spip_indexation liés à des objets disparus
-  indexer à part le titre et les meta-infos (surtitre, mots liés...), noter la date de l’objet
-  mode d’indexation à l’ancienne (mots, dico etc) ??
-  repérage automatique des incompatibilités
-  indexer des articles de plusieurs sites SPIP avec le mode « distant » des connexions bases de données
-  pour la balise #EXTRAIT :

  • si on donne deux mots, ne pas donner deux extraits si le second mot est dans l’extrait du premier
  • si on recherche "x y", surligner sans se faire manger par le "
  • ne pas couper les mots salement ("ampoule" => "poule")

-  autres...

Note sur les jeux de caractères

Pour que le mode FULLTEXT de MySQL fonctionne bien, et gère proprement les accents, il faut absolument que la base elle-même sache qu’elle contient de l’utf-8. Or SPIP a longtemps été « sale » de ce point de vue, et les anciennes bases conservent un héritage où les tables contiennent de l’utf-8, mais croient qu’elles contiennent de l’iso-latin-swedish (jeu de caractères
standard de MySQL).

Donc, pour que ça fonctionne vraiment, il convient d’exécuter
ecrire/ ?exec=convert_sql_utf8

ATTENTION À FAIRE UN BACKUP AVANT

Il est possible qu’il faille ensuite demander une réindexation complète du contenu, cf. la page exec=admin_index

Sur un serveur de tests (MySQL un peu vieux : version 4.0.26-standard),
j’ai un message d’erreur « Le charset SPIP actuel utf-8 n’est pas
supporte par votre serveur MySQL ».

Remarque sur les performances

Ou : « du bon usage du plugin indexation »

D’un côté :
-  le moteur de recherche qui attaque directement les tables marche,
selon mes tests, aussi bien que l’ancienne indexation des mots. Il
économise aussi une grosse tâche cron et beaucoup de données en base.
Donc moins de choses à charger en RAM par le serveur, donc moins
souvent des requetes qui mettent 2 minutes à arriver, moins de swap
etc.

De l’autre :
-  la nouvelle indexation crée et remplit une nouvelle table
spip_indexation, en y collant une copie (nettoyée) des données
textuelles de toutes les tables. Avec l’index FULLTEXT en sus, ça
occupe environ deux fois la taille des données. Et rajoute une tâche
cron (plus légère que l’ancienne). On ne peut pas penser que ça n’a
pas d’impact en termes de perfs (si on a peu de RAM par exemple).
Mais en contrepartie les recherches se font à la vitesse de l’éclair,
puisque faites « nativement » par le moteur de MySQL. Donc une petite
perte à chaque hit normal, et un gros gain à chaque recherche.

À partir de là il faut voir ce qu’on veut. Pour un petit site je pense
qu’il n’est pas nécessaire d’utiliser Indexation, la recherche « bête »
est suffisante. Pour un gros site où la recherche peut retourner des
centaines de documents, ou si on veut indexer des PDF, etc, ça vaut le
coup de se charger de cette complexité supplémentaire. Et si on a des
millions de documents, il faut probablement encore autre chose.

Voir en ligne : http://plugins.spip.net/indexation

Notes

[1Nota : il s’agit de la version 1.9.3 en développement. Cette contrib n’est donc pas compatible avec les versions 1.9.2 et antérieures

Dernière modification de cette page le 11 juin 2012

Retour en haut de la page

Tout afficher

Vos commentaires

  • Le 1er juillet 2009 à 15:15, par ? En réponse à : Le plugin Indexation

    Bonjour,
    J’ai aussi un problème avec l’indexation de certains pdf : certains pdf sont bien indexés mais pas d’autres.

    Les pdf bien indexés sont des pdf pour lesquels la fonction extracteur_pdf (dans pdf.php ) fonctionne.

    Mais, pour les pdf non indexés, cette fonction (testée à part) ne fonctionne pas.

    Par contre, cela fonctionne en utilisant pdftotext au lieu de la fonction extracteur_pdf .

    Je peux vous faire parvenir un exemple de pdf non lu par extracteur_pdf .
    Patricia

    Répondre à ce message

  • Le 18 juin 2009 à 21:01, par Mat En réponse à : Encodage

    Hello,
    j’ai un petit souci d’encodage avec ce plugin. Certains de mes PDFs sont encodés correctement, d’autres non...Savez-vous d’où peut venir ce problème ? J’ai bien veillé à mettre toutes mes tables en utf8. Est ce que cela dépend de l’encodage du PDF lui même ?

    Merci !

    Répondre à ce message

  • Le 16 avril 2009 à 15:34, par ? En réponse à : Le plugin Indexation

    J’apprécie beaucoup ce plugin. En guise de remerciement, voici en pièce jointe une traduction anglaise du fichier de langue « fulltext_en.php ».

    Beau travail. Merci encore et bonne journée.

    Répondre à ce message

  • Le 17 mars 2009 à 11:55, par gandhy En réponse à : Le plugin Indexation

    Bonjour
    Nouvelle tentative avec la version 206 et le plugins indexation :

    -  grace au modification du fichier indexation.php et pdf.php, la table indexation dans mysql se rempli bien (merci pour l’aide)
    -  par contre sur la page publique, toute recherche renvoi un page de debug

    exemple : (juste le debut)
    « Erreur(s) dans le squelette

    1 ()
    Erreur SQL
    articles.id_article, ’’, articles.titre, articles.lang FROM spip_articles AS `articles` WHERE (articles.statut = ’publie’) AND (articles.date < ’9999-12-31’) ORDER BY points DESC
    Unknown column ’points’ in ’order clause’
     »

    merci pour une nouvelle aide

    Répondre à ce message

  • Le 26 décembre 2008 à 11:54, par gandhy En réponse à : Le plugin Indexation

    bonjour

    De retour pour tester le plugin indexation avec spip202

    Mise en place : spip202 en local et installation du plugin en automatique avec http://files.spip.org/spip-zone/indexation.zip
    j’ai aussi installe pdftotext sur le serveur (et fait un test en console pdftotext monpdf.pdf montext.txt )

    Mais bon l’indexation du pdf ne se fait pas dans spip.
    J’ai regarde la table spip_indexation effectivement le texte du pdf n’a pas ete extrait.

    J’ai regarde dans le plugin le fichier /indexation/extract/pdf.php.
    Je pense que c’est dans ce fichier que le choix de l’extraction se fait ( tout php ou pdftotext)
    mais bon meme en changeant les /* de place pour utiliser l’un ou l’autre, ca ne marche pas

    quelqu’un a une piste a me donner ?

    • Le 20 février 2009 à 09:19, par Mathieu En réponse à : Le plugin Indexation - Corrigé

      Je viens de tester sur SPIP 2.03.

      J’ai corrigé l’indexation PDF, en tout cas maintenant ça fonctionne.

      Fichier indexation/inc/indexation.php :
      Fonction indexer_contenu_document.

      Mettre :

      $contenu = $lire(realpath(_DIR_RACINE)."/$fichier", $charset);

      Et, fichier indexation/extract/pdf.php
      Voila à quoi ressemble ma fonction :

      function extracteur_pdf($fichier, &$charset) {

      #       
      /* methode tout PHP
                      $pdf = new Format_PDF;
                      return $pdf->extraire_texte($fichier);
      */
              $charset = 'iso-8859-1';
              # metamail
      //        @exec('metamail -d -q -b -c application/pdf '.escapeshellarg($fichier), $r, $e);
      //        if (!$e) return @join(' ', $r);
              # pdftotext
              # http://www.glyphandcog.com/Xpdf.html
              # l'option "-enc utf-8" peut echouer ... dommage !
              exec('/usr/local/bin/pdftotext \''.$fichier.'\' - ', $r, $e);
              if (!$e) return @join(' ', $r);
      //*/
      }

      Grosso modo, mettre le full distinguish name de la commande pdftotext et protéger le chemin avec des simples cotes.

      Mathieu.

    Répondre à ce message

  • Le 16 décembre 2008 à 13:45, par ? En réponse à : Le plugin Indexation

    Le lien dans l’article ne pointe pas vers la dernière version du plugin :

    http://files.spip.org/spip-zone/indexation.zip
    -  > en ce moment version 0.4

    Répondre à ce message

  • Le 12 novembre 2008 à 17:53, par François Daniel Giezendanner En réponse à : Indexation fulltext des documents pdf, doc, ... avec le plugin Indexation

    Bonjour,

    Concernant le message de gandhy du 11 mars 18:02 : « bonjour je fais un test en local avec SPIP 1.9.3 dev [11283] et mysql 5, ... mais l’indexation fulltext des pdf ne marche pas... »

    Qu’en est-il avec SPIP 1.9.2.e ?

    Au SEM-DIP à Genève, nous avons besoin de cette fonctionnalité

    Meilleurs messages

    FDG

    Répondre à ce message

  • Le 10 juillet 2008 à 09:35, par paolo En réponse à : Le plugin Indexation

    Le plugin Indexation ne marche pas avec SPIP SVN (12027).
    Voir :
    http://article.gmane.org/gmane.comp.web.spip.zone/9250

    • Le 26 juillet 2008 à 23:41, par ? En réponse à : Le plugin Indexation

      C’est corrigé en version 0.4 le plugin Indexation est compatible SPIP 2.0

    Répondre à ce message

  • Le 18 février 2008 à 14:12, par horetol En réponse à : Call to undefined function : sql_countsel()

    Bonjour

    Chez OVH avec un spip 192d [11132] avec le plugin téléchargé ce jour via svn, (révison 18239 je crois) j’ai ce message d’erreur.

    Fatal error : Call to undefined function : sql_countsel() in /home.13/axeclotu/www/plugins/indexation/exec/admin_index.php on line 129.

    et aussi un message d’erreur à chaque modification d’article (mot-clef, rubrique, etc)

    Fatal error : Call to undefined function : marquer_indexer() in /home.13/axeclotu/www/ecrire/inc/modifier.php on line 92

    Cela provient-il d’une configuration d’OVH ? Que faire ?

    Merci.

    • Le 18 février 2008 à 14:18, par horetol En réponse à : Call to undefined function : sql_countsel()

      Désolé, je viens seulement de lire le nota

      [1] Nota : il s’agit de la version 1.9.3 en développement. Cette contrib n’est donc pas compatible avec les versions 1.9.2 et antérieures

      Donc ceci explique cela je suppose.

    • Le 10 juin 2008 à 14:01, par ? En réponse à : Call to undefined function : sql_countsel()

      Même erreur :
      Fatal error : Call to undefined function : marquer_indexer() in /limoux/vol1/datas/WebSites/spip-1.9.2d/ecrire/inc/modifier.php on line 92

      Call Stack
      #Time Memory Function Location
      1 0.0002 66064 main( ) ../spip.php:0

      2 0.0158 625288 include( ) ../spip.php:24

      3 0.0196 818440 action_editer_article_dist( ) ../public.php:54
      4 0.0240 981488 articles_set( ) ../editer_article.php:38

      5 0.0240 981488 revisions_articles( ) ../editer_article.php:53

      6 0.0330 1320488 modifier_contenu( ) ../editer_article.php:138


      Version de SPIP : 1.9.2d (revision 11132)

      Plugin indexation 0.3 dev (pris dans plugins_stable.zip)

      MySQL 5.0.19

      Les tables doivent elles être en UT8 ?

    • Le 10 juin 2008 à 14:50, par ? En réponse à : Call to undefined function : sql_countsel()

      Ce plugin n’est pas compatible 1.9.2, il ne fonctionne qu’avec la branche dev de SPIP 1.9.3

    Répondre à ce message

  • Le 1er mai 2008 à 19:33, par Penchaki En réponse à : Le plugin Indexation

    Bonjour,
    D’abord merci pour ce plugin qui va me permettre d’indexer bon nombre de docs ...
    Je suis en train de tester en local ...
    Voici le message qui met retourné :
    Fatal error : Call to undefined function prepare_recherche() in D :\wamp\www\DEMO\ecrire\public\composer.php(72) : eval()’d code on line 16

    ma version SPIP 1.9.2d

    • Le 8 mai 2008 à 09:51, par paolo En réponse à : Le plugin Indexation

      Lire l’article !

      Conditions de compatibilité :
      -  SPIP SVN révision >= 10182 [1]

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Mailsubscribers

    16 janvier 2013 – 274 commentaires

    Ce plugin permet de gérer les inscriptions (ou abonnements) à la diffusion de contenu par email. Mailsubscribers permet de gérer les inscriptions par Opt-in simple ou double et la désinscription par URL. Ce plugin gère également plusieurs listes (...)

  • noiZetier v2

    9 novembre 2012 – 36 commentaires

    Le noiZetier offre une interface d’administration permettant d’insérer au choix des éléments modulaires de squelettes (noisettes) et de les ajouter ainsi à ses squelettes. Compatibilité La version 2 du noizetier fonctionne sous SPIP 3. Elle est (...)

  • cirr : plugin « rédacteur restreint »

    29 octobre 2010 – 60 commentaires

    Ce plugin « cirr : rédacteur restreint » permet d’affecter des rubriques aux rédacteurs et modifie les droits afin qu’un rédacteur restreint (ou un administrateur restreint) voit dans l’espace privé uniquement les rubriques qui lui sont affectées (et leur (...)

  • Un retour d’expérience d’utilisation de Formidable

    26 octobre – commentaires

    Il s’agissait de créer un formulaire d’inscription à un évènement modérer les inscriptions dans le privé publier les inscriptions dans le public Nous avons discuté de cette présentation lors de l’apéro SPIP du 15 février 2016 à la Cantine (...)

  • Métas +

    3 décembre – 14 commentaires

    Améliorez l’indexation de vos articles dans les moteurs et leur affichage sur les réseaux sociaux grâce aux métadonnées Dublin Core, Open Graph et Twitter Card. Installation Activer le plugin dans le menu dédié. Dans le panel de configuration, (...)

Ça spipe par là