SPIP-Contrib

SPIP-Contrib

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

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

Accueil > Navigation > Recherche > Recherche Fulltext > Fulltext

Fulltext

14 mars 2009 – par Fil, Gaël Chareyre, Nicolas Hoizey, scaron – 215 commentaires

52 votes

Ce plugin permet d’une part d’exploiter le mode de recherche FULLTEXT de MySQL et d’améliorer ainsi énormément les recherches par rapport au fonctionnement natif de SPIP, et d’autre part d’indexer le contenu de certains documents.

Ce plugin permet d’une part d’exploiter le mode de recherche FULLTEXT de MySQL en améliorant ainsi énormément les recherches par rapport au fonctionnement natif (et naïf) de SPIP, et d’autre part d’étendre l’indexation au contenu textuel des documents joints aux articles et/ou rubriques [1].

Indexation FULLTEXT

Performance

Sur une base de test comportant 200 000 articles, la vitesse de la recherche (hors rendu de la page, qui se fait à temps constant) passe de 5 secondes à 10 millisecondes ; sur deux mots, on passe de 15 secondes à 0,1 seconde.

Pertinence

Les résultats sont beaucoup plus pertinents, puisque si on tape deux mots (ou plus), le moteur FULLTEXT va trouver comme avant l’ensemble des articles contenant ces deux mots, mais attribuera un score plus important à ceux qui disposent de ces deux mots consécutifs. Ce score est comptabilisé par la balise #POINTS.

Fonctionnalité

Outre la recherche basique, le mode FULLTEXT permet d’utiliser des opérateurs logiques :

La casse (minuscule/majuscule) des mots recherchés est indifférente.
Les accents ne sont pas pris en compte (« déjà » ou « deja », retourneront à l'identique « déjà », « dejà », « déja »...)
Exemples d'utilisation
  ⇢ Retourne les textes qui contiennent SOIT « enfant », SOIT « étranger », SOIT « enfant » ET « étranger ».
  ⇢ Retourne les textes qui contiennent « enfant » ET « étranger ».
  ⇢ Retourne les textes qui contiennent « enfant » mais présente en premier les textes qui contiennent aussi « étranger ».
  ⇢ Retourne les textes qui contiennent « enfant » mais PAS « étranger ».
  ⇢ Retourne les textes qui contiennent « enfant » ET « étranger » ou bien « enfant » ET « Asie » mais présente en premier les textes qui contiennent « enfant » ET « étranger ».
  ⇢ Retourne les textes qui contiennent « enfant », « enfants », « enfance », « enfanter », « enfantillage ».... (L'astérisque * doit être terminale ; ainsi « *fant » ne retournera rien.)
  ⇢ Retourne les textes qui contiennent exactement la séquence de mots « enfant étranger ».

Remarque : ce tableau constitue le contenu de l’aide fournie dans ce plugin par la balise #AIDE_RECHERCHE.

Principe de fonctionnement

Concernant uniquement la partie mettant en œuvre l’indexation FULLTEXT, le plugin utilise ces deux fichiers :

-  inc/rechercher.php est une amélioration du fichier du même nom livré avec SPIP. À chaque recherche sur une table, ce fichier vérifie la présence d’un ou plusieurs index FULLTEXT sur la table en question (ainsi que sur les tables qui lui sont liées par une jointure, voir ci-dessous).

-  exec/fulltext.php vous propose de créer des index FULLTEXT sur la plupart des tables de SPIP. C’est une proposition, qui correspond aux usages les plus « normaux » de SPIP (pour aller plus loin, cf. ci-dessous, configuration avancée).

Jointures

Le moteur natif de SPIP gère les jointures entre les tables. Avec FULLTEXT on les gère aussi, mais à condition qu’il existe au moins un index FULLTEXT sur chacune des tables liées.

Ainsi par exemple, si vous avez un FULLTEXT sur spip_articles, un autre sur spip_mots, mais aucun sur spip_auteurs, une recherche sur les articles avec le terme « Italie » renverra les articles liés au mot-clé « Italie », mais une recherche sur le terme « Robespierre » ne renverra pas les articles signés par cet auteur.

Autrement dit, sauf application particulière, vous avez tout intérêt à passer l’ensemble des tables en mode FULLTEXT.

Indexation du contenu textuel des documents

Ce plugin propose en outre l’indexation (optionnelle) du contenu textuel des documents joints aux articles et/ou rubriques.

Il stocke pour cela dans la table spip_documents une version texte du document, obtenue à l’aide d’un « extracteur ». Cet extracteur peut être un exécutable système lancé depuis le plugin, ou du code purement PHP.

Les formats supportés à partir de la version 0.6.2 du plugin sont :

  • Le PDF, à condition que le fichier ne soit pas protégé contre la copie
  • Le DOC, PPT, et XLS
  • Le DOCX, PPTX et XLSX (nécessite PHP 5.2 au minimum, ainsi que l’option -enable-zip)
  • Le ODT (nécessite PHP 5.2 au minimum, ainsi que l’option -enable-zip)

Installation

Mise en place de l’indexation FULLTEXT

Une fois le plugin installé dans le répertoire plugins/ et activé à partir de la page « Gestion des plugins », la recherche fonctionne exactement comme avant. Pour l’installation proprement dite, il faut créer des index FULLTEXT sur les tables ; pour cela, il suffit de se rendre sur la page ecrire/?exec=fulltext, et de valider les opérations proposées.

On peut aussi, alternativement, les créer « à la main » à partir de n’importe quel client MySQL, avec les commandes suivantes :

ALTER TABLE spip_articles ADD FULLTEXT `titre` (`titre`);
ALTER TABLE spip_articles ADD FULLTEXT `tout`
  (`surtitre`,`titre`,`soustitre`,`chapo`,`texte`,`nom_site`,`url_site`,`descriptif`);

Le mode FULLTEXT n’étant disponible que sur les tables au format MyISAM, il faut parfois au préalable convertir les tables dans ce format :

ALTER TABLE spip_articles ENGINE=MyISAM;

La page ecrire/?exec=fulltext permet aussi de faire cela.

Indexation du contenu textuel des documents

Pour l’indexation des documents, il faut installer certains logiciels additionnels, et indiquer leur présence au plugin via des constantes à définir dans le fichier mes_options.php ou en utilisant le panneau de configuration de l’indexation des documents sur la page ecrire/?exec=fulltext_document.

Le panneau de configuration de l’indexation des documents permet de gérer la configuration (extracteurs et options éventuels) pour les fichiers PDF, DOC, PPT, XLS, ODT, DOCX, PPTX et XLSX et d’activer ou non l’indexation de ceux. ceci remplace la définition des constantes dans le fichier mes_options.php.

Certaines constantes sont génériques, non liées au type de fichier :

  • _FULLTEXT_TAILLE : Taille maximum conservée (en nombre de caractères) pour la version texte des fichiers (50000 par défaut). Cette configuration est également disponible dans panneau de configuration de l’indexation des documents.
  • De même, il est possible de définir l’intervalle (en seconde) entre deux passages du Spip-CRON et le nombre de document traités par itération.

Pour indexer un type de document, il est obligatoire de définir une constante non-nulle de type _FULLTEXT_EXT_EXE (où EXT est l’extension de ces documents) ou d’activer l’indexation via le panneau de configuration.
Il faut également qu’un « extracteur » pour ce type de document soit disponible.

Pour les PDF

  • Installer Xpdf
  • Définir ces constantes :
    • _FULLTEXT_PDF_EXE (par exemple /usr/bin/pdftotext) : Chemin vers l’exécutable pdftotext de Xdpf afin de transformer les fichiers PDF en texte brut
    • _FULLTEXT_PDF_CMD_OPTIONS (par exemple -enc UTF-8) : Options d’appel de l’exécutable

Pour les DOC, PPT et XLS

  • Installer Catdoc
  • Définir les constantes correspondantes (_FULLTEXT_DOC_EXE, _FULLTEXT_DOC_CMD_OPTIONS, etc.) ou utiliser le panneau de configuration de la même manière que pour les PDF.
    • Exemples pour les DOC :
      • Exemple pour utilisation en local sous Windows define("_FULLTEXT_DOC_EXE","C:\catdoc\catdoc.exe");
      • Exemple pour utilisation sous Linux : define("_FULLTEXT_DOC_EXE","/usr/bin/catdoc");
      • Exemple d’option pour extraction de DOC au format « Windows » vers format ISO-8859-1 : define("_FULLTEXT_DOC_CMD_OPTIONS","-s cp1252 -d 8859-1 ");
    • Exemples pour les XLS :
      • Exemple pour utilisation en local sous Windows define("_FULLTEXT_XLS_EXE","C:\catdoc\xls2csvt.exe");
      • Exemple pour utilisation sous Linux : define("_FULLTEXT_XLS_EXE","/usr/bin/xls2csvt");
      • Exemple d’option pour extraction de .XLS au format « Windows » vers format ISO-8859-1 : define("_FULLTEXT_XLS_CMD_OPTIONS","-s cp1252 -d 8859-1 ");
    • Exemples pour les PPT :
      • Exemple pour utilisation en local sous Windows define("_FULLTEXT_PPT_EXE","C:\catdoc\catpp.exe");
      • Exemple pour utilisation sous Linux : define("_FULLTEXT_PPT_EXE","/usr/bin/catpp");

Pour les ODT, DOCX, PPTX, XLSX

  • Les « extracteurs » utilisent des fonctions et des classes PHP fournit avec le plugin (nécessite PHP 5.2 au minimum, ainsi que l’option -enable-zip).
  • Définir les constantes correspondantes (_FULLTEXT_ODT_EXE, _FULLTEXT_DOCX_EXE, etc.) ou utiliser le panneau de configuration pour autoriser l’indexation. Il n’y a pas de binaire ou d’option à définir (mais si vous n’utilisez pas le panneau de configuration, une constante non-nulle doit être définie).

Documents protégés

Les documents PDF et XLS protégés ne seront pas indexé et se verront affecter le statut "ptg" dans la base de données.
Une page ecrire/?exec=fulltext_document_ptg permet d’obtenir la liste de ceux-ci.
Les documents PPT et PPTX protégés ne seront pas indexés et seront renvoyés comme erreur (statut "err").

Les documents DOC, DOCX, ODT et XLSX protégés semblent être indexés.

Suivi

Analyse des recherches

Le plugin fait un suivi de ses opérations liées à la recherche dans tmp/recherche.log ; on voit les index FULLTEXT utilisés, le temps mis pour chaque recherche et le nombre de résultats, etc.

Exemple de log :

Mar 13 15:28:42 1.2.3.4 (pid 21184) fulltext article: titre, full2
Mar 13 15:28:42 1.2.3.4 (pid 21184) fulltext auteur: nom
Mar 13 15:28:42 1.2.3.4 (pid 21184) fulltext mot: titre
Mar 13 15:28:42 1.2.3.4 (pid 21184) MATCH(t.`titre`) AGAINST ('fluor dans l\'eau \"fluor dans l\'eau\"') * 3.1
  + MATCH(t.`surtitre`,t.`titre`,t.`soustitre`,t.`chapo`,t.`descriptif`) AGAINST ('fluor dans l\'eau \"fluor dans l\'eau\"') * 1.4
  + SUM(MATCH(obj1.`nom`) AGAINST ('fluor dans l\'eau'))
  + SUM(MATCH(obj2.`titre`) AGAINST ('fluor dans l\'eau'))
   AS score
Mar 13 15:28:42 96.21.135.101 (pid 21184) recherche article (fluor dans l'eau) : 500 resultats 1.187s

Ce log indique que la table article a deux index FULLTEXT nommés titre et full2 ; que la recherche portant sur « fluor dans l’eau » donne un poids de 3,1 à la présence de ces mots dans le titre, 1,4 dans l’ensemble des champs, et 1 pour le nom d’un auteur ou d’un mot-clé lié par une jointure.

Analyse des extractions

Le plugin fait aussi le suivi des extractions de version texte des fichiers, dans tmp/extract.log.

La page de configuration du plugin ecrire/?exec=fulltext indique le nombre de documents indexés, en attente d’indexation, protégés ou en erreurs.

Configuration avancée des index FULLTEXT

Avec n’importe quel client MySQL (ou phpMyAdmin) vous pouvez aller modifier la structure des index pour affiner les réponses, en incluant ou en excluant des champs, selon vos usages.

Ceci est notamment à faire si vous utilisez Extras2 pour ajouter de nouveaux champs : il faut alors créer un index incluant ces champs, pour qu’ils soient cherchables.

Notre recommandation : supprimer le précédent index FULLTEXT de tous les champs standards, et recréer un index FULLTEXT intégrant les champs standards et les champs extras pertinents. Seuls les champs de type TEXT (ou LONGTEXT etc) peuvent faire partie d’un index FULLTEXT.

Il est aussi possible d’aller bidouiller à l’intérieur du fichier pour, par exemple :

Ajouter des pondérations aux différents index

Le code consiste en une somme des scores donnés aux articles par les différents index. La pondération par défaut est une fonction décroissante du nombre d’éléments dans l’index. Ainsi, si on a deux index sur une table, l’un portant sur le titre, et l’autre sur l’ensemble des champs texte de la table, les termes de recherche présents dans le titre auront un poids de 4 environ, tandis que les mêmes termes trouvés dans le texte ne vaudront que 1 point.

Si l’on veut modifier ces poids il est possible :
— soit de modifier cette fonction pour qu’elle soit plus (ou moins) fortement décroissante ;
— soit d’ajouter un système encore plus compliqué avec des options de configuration ;
— soit d’ajouter un index. Par exemple, pour survaloriser les champs surtitre, sous-titre et chapo par rapport au champ texte, créer un index FULLTEXT supplémentaire avec la commande ci-dessous :

ALTER TABLE spip_articles ADD FULLTEXT `titrailles`
  (`surtitre`,`titre`,`soustitre`,`chapo`);

Cela dit, les réglages proposés par défaut marchent très bien pour nous, essayez-les :-)

Éliminer de la recherche tout un ensemble d’éléments

Scénario : notre base de données comporte toutes les archives d’un journal depuis 1920. Si l’on veut faire une recherche qui limite aux seuls articles récents, il n’est pas raisonnable de demander à inc/rechercher.php de ramener suffisamment d’articles pour ensuite en éliminer 90 % avec un critère {date>1980} dans la boucle. On peut alors envisager d’ajouter « en dur » un critère WHERE supplémentaire au niveau de la requête MySQL de inc/rechercher.php.
-  pour ce faire, on pourra, par exemple, réduire le corpus de recherche pour la table spip_articles, en ajoutant dans mes_options.php une ligne :

 define('_FULLTEXT_WHERE_article', ' t.date>"1980" ');


bien noter qu’il ne faut pas le ’s’ final dans le nom de la table, ainsi que l’utilisation des 2 types de quotes (’ et ") dans la définition de la clause WHERE.

Permettre à l’utilisateur de déterminer le corpus de recherche

On peut vouloir donner la possibilité à l’utilisateur de fixer la date de départ de sa recherche (lui permettre de ne chercher qu’à partir d’une date qu’il fixe lui-même).
Rien de plus simple.

-  Commençons par ajouter un input dans notre formulaire de recherche (formulaires/recherche.html) :

 <input type="text" class="text" size="5" name="recherche_date" id="recherche_date"[ value="(#ENV{recherche_date})"] />


-  Puis, dans notre fichier recherche_fonctions.php :

 if ( _request('recherche_date') && preg_match('/\d{4}/', _request('recherche_date')) ) {
   $limite = _request('recherche_date');
   define('_FULLTEXT_WHERE_article', 't.date>"' . $limite . '"');
   define('_FULLTEXT_WHERE_rubrique', 't.date>"' . $limite . '"');
   define('_FULLTEXT_WHERE_document', 't.date>"' . $limite . '"');
}

Ceci limitera le corpus de recherche (l’ensemble des données dans lequel s’effectuera la recherche) pour les articles, rubriques et documents aux seuls éléments dont la date (en l’occurence l’année de publication) est strictement supérieure à celle fournie par l’utilisateur.

Étendre la recherche aux mots de 3 lettres

Par défaut MySQL FULLTEXT indexe les mots de quatre lettres ou plus. Pour étendre la recherche aux mots de 3 lettres ou plus, il faut modifier la config du serveur (/etc/mysql/my.cnf sous Debian), et ajouter les deux éléments suivants :

[mysqld]
ft_min_word_len=3
[myisamchk]
ft_min_word_len=3

Attention après avoir effectué cette manipulation il est impératif de reconstruire tous les index FULLTEXT de toutes les bases de données présentes sur le serveur, cf. http://dev.mysql.com/doc/refman/5.1....
Une méthode en ligne de commande (il faut être root) :

# /etc/init.d/mysql stop
Stopping MySQL database server: mysqld.
# myisamchk --recover /var/lib/mysql*/*MYI
... (quelques secondes ou minutes) ...
# /etc/init.d/mysql start

Exemples d’utilisation

Suggérer des réponses aux questions sur forum.spip.org

Lire l’article « Forum.spip.org comme base de connaissances » sur spip.blog.

et aussi

... à vous de jouer !

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

Notes

[1Uniquement les PDF, DOC, PPT, XLS, ODT, DOCX, PPTX et XLXS dans un premier temps.

Dernière modification de cette page le 5 avril 2015

Retour en haut de la page

Tout afficher

Vos commentaires

  • Le 10 novembre à 17:49, par robomatix En réponse à : Fulltext

    Bonsoir,

    Suite à différents tests nous avons remarqué que l’exclusion de ’étranger’ dans une recherche full text du type ’+enfant -étranger’ n’était plus prise en compte dans les résultats en dessous d’un certain indice de pertinence. Nous avons donc quand même des résultats avec ’étranger’ quand l’indice de pertinence est < ou = à 10.

    Dans l’aide de Full Text il est pourtant indiqué : " Retourne les textes qui contiennent « enfant » mais PAS « étranger »."

    Est-ce normal ?

    Une idée sur la façon de modifier/corriger ce comportement ?

    Merci d’avance

    Répondre à ce message

  • Le 29 août à 11:30, par robomatix En réponse à : Fulltext

    J’ai essayé d’ajouter la recherche fulltext sur les zoteros de zotspip.

    J’ai fait un mini plus gin pour cela avec l’appel d’un pipeline :

    1. function zotspiprecherche_rechercher_liste_des_champs($tables) {
    2. $tables['zitem']['titre'] = 10;
    3. $tables['zitem']['resume'] = 7;
    4. return $tables;
    5. }

    Télécharger

    J’ai pu générer les indexes...

    J’ai fait cette boucle :

    1. <B_zitem>
    2. <div class="menu menu_sites">
    3. #ANCRE_PAGINATION
    4. <h2>Recherche de base SPIP pour Zoteros "#ENV{recherche}" (#GRAND_TOTAL)</h2>
    5. <ul class="spip">
    6. <BOUCLE_zitem(ZITEMS) {recherche} {!par points} {id_parent==0} {pagination 10}>
    7. <li><b>#TITRE</b> #POINTS</li>
    8. [<li><b>Json : </b>(#JSON)</li>]
    9. [<li><b>Resume : </b>(#RESUME)</li>]
    10. </BOUCLE_zitem>
    11. </ul>
    12. [<p class="pagination">(#PAGINATION)</p>]
    13. </div>
    14. </B_zitem>

    Télécharger

    Mais les résultats ne collent pas...

    J’ai trouvé un fichier log fulltext.log dans tmp/log :

    Aug 29 10:02:11 83.152.44.246 (pid 26641) :Pri:ERREUR : TABLE spip_plugins ADD FULLTEXT `prefixe` (`prefixe`)
    Aug 29 11:14:25 83.152.44.246 (pid 22848) :Pri:ERREUR : TABLE spip_plugins ADD FULLTEXT `prefixe` (`prefixe`)
    

    Je ne comprend pas trop ce qui se passe....

    Est ce que quelqu’un aurait une idée, une piste ?

    Merci d’avance !

    • Le 3 novembre à 19:58, par robomatix En réponse à : Fulltext

      Bonjour à tous !

      Finalement, nous travaillons sur le plugin zotero pour le faire évoluer.

      Nous avons résolu le problème des jointures.

      J’ai trouvé la piste ici : http://code.spip.net/fr/archives/plugins-7/article/declarer-et-ajouter-des-tables

      La partie intéressante est celle-là :

      $join_nouvelletable = array(
      « id_article » => « id_article »
      ) ;

      $tables_principales[’spip_nouvelletable’] = array(
      ’field’=>&$nouvelletable,
      ’key’ => &$cles_nouvelletable,
      ’join’ => &$join_nouvelletable,
      ) ;

      Pour la table zitems, j’ai écris

      $join_zitems = array(
      « id_zitem » => « id_zitem »
      ) ;

      $tables_principales[’spip_zitems’] = array(
      ’field’ => &$zitems,
      ’key’ => &$zitems_cles,
      ’join’ => &$join_zitems,
      ) ;

      J’ai suivi ce principe sur les autre tables.

      Donc maintenant, les références zotero s’affichent bien dans l’espace privée et nous pouvons faire des jointures dans les boucles de la partie publique.

      Par contre, les résultats de la recherche fulltext ne sont toujours pas pertinents...

      Est ce que quelqu’un aurait une idée ? Une piste à creuser ?

      Merci d’avance de votre aide.

    Répondre à ce message

  • Le 28 octobre à 11:47, par Vero En réponse à : Fulltext

    Bonjour,

    Les documents images sont en erreur d’indexation, ce qui me parait normal.
    Donc, ils ressortent dans le total des documents en erreur.

    N’y a t-il pas possibilité de les sortir de ce décompte ?

    Merci d’avance et bravo pour ce plugin !

    Répondre à ce message

  • Le 29 juillet à 15:07, par robomatix En réponse à : Fulltext

    Je tente de faire une recherche fulltext sur les objets du plugin zotspip.

    J’ai déclarer table et jointure via pipelines :

    1. // Ajout nouvelles tables de recherche
    2. $GLOBALS['spip_pipeline']['rechercher_liste_des_champs'] .= "|ajout_recherche_champs";
    3.  
    4. function ajout_recherche_champs($tables) {
    5. $tables['zitems']['titre'] = 3;
    6. $tables['zcollections']['zcollection'] = 3;
    7. $tables['zcreators']['auteur'] = 3;
    8. return $tables;
    9. }
    10.  
    11. // Ajout nouvelles jointures
    12. $GLOBALS['spip_pipeline']['rechercher_liste_des_jointures'] .= "|ajout_jointures";
    13.  
    14. function ajout_jointures($tables) {
    15. $tables['zitems']['zcollections']['zcollection'] = 2;
    16. $tables['zitems']['zcreators']['auteur'] = 2;
    17. return $tables;
    18. }

    Télécharger

    J’ai fait la conversion des tables avec l’outil fourni avec Fulltext dans l’espace privé de spip.

    Mais ma boucle spip spip ci-dessous ne sort rien...

    1. <B_zitem>
    2. <div class="menu menu_sites">
    3. #ANCRE_PAGINATION
    4. <h2>Recherche zitem perso (#GRAND_TOTAL)</h2>
    5. <ul class="spip">
    6. <BOUCLE_zitem(ZITEMS){recherche} {pagination 5}>
    7. <li>#TITRE</li>
    8. </BOUCLE_zitem>
    9. </ul>
    10. [<p class="pagination">(#PAGINATION)</p>]
    11. </div>
    12. </B_zitem>

    Télécharger

    Vous pouvez prendre votre temps pour répondre, je suis en vacances à partir de maintenant !

    Ceci dit, merci d’avance de vos réponses !

    Répondre à ce message

  • Le 16 mai à 11:37, par ADB En réponse à : Fulltext

    Bonjour

    Je viens d’installer Fulltext. Tout fonctionne bien sauf... qu’il ne trouve jamais Olympic marina (ou olym* ou toute autre combinaison) sur mon site

    guidemediterranee.com

    Olympic marina est en chapo et « dépend » de Lavrion.

    Il existe un Lavrion (titre) et un Lavrion - Olympic marina (titre + chapo)

    Une recherche sur Lavrion ne donne que Lavrion et pas les deux entrées.

    Je ne comprend vraiment pas pourquoi (alors que Athenes donne bienb tous les Athènes)

    Merci d’un essai d’explication

    ADB

    • Le 16 mai à 12:19, par ADB En réponse à : Fulltext

      Je me réponds à moi-même...

      Désolé pour le bruit : il s’agissait simplement d’un problème de mot clé dans le fichier Recherche.html.

      Tout est parfait

      Merci pour ce plugin

    Répondre à ce message

  • Le 3 février à 14:42, par Syd En réponse à : Fulltext

    Bonjour

    Gros problème de restauration de la base, ça semble venir du plugin Fulltext.
    Ma base est en mysql.

    Lorsque je veux restaurer la base sauvegardée via le menu maintenance de Spip, toutes les tables sont en échec.
    Lorsque j’exporte, puis réimporte via phpmyadmin, j’ai l’erreur suivante :
    #1064 - You have an error in your SQL syntax ; check the manual that corresponds to your MySQL server version for the right syntax to use near ’TYPE=MyISAM AUTO_INCREMENT=558’ at line 44

    Ma config :
    SPIP 3.0.16
    Fulltext 1.1.8 à jour.

    Merci pour votre aide.

    Répondre à ce message

  • Le 8 décembre 2014 à 11:45, par peetdu En réponse à : Fulltext

    Avec SPIP 3.0.17 et Fulltext 1.0.2 la recherche sur le mot « this » ne donne rien.
    Ce mot fait référence à un auteur qui s’appelle « Hervé This ».

    J’arrive bien à trouver des auteurs dont le nom est en 4 lettres par ailleurs.

    Avez-vous une idée sur l’origine du problème ?

    • Le 2 décembre 2015 à 13:11, par peetdu En réponse à : Fulltext

      Sur SPIP 3.0.21 avec Fulltext 1.1.8, testé sur deux sites

      la recherche ne prend pas en compte certains mots comme

      -  this
      -  the
      -  new

      Cela ressemble à des mots clés qui ne seraient pas pris en compte ?
      Des idées ?

    • Le 2 décembre 2015 à 13:13, par peetdu En réponse à : Fulltext

      je précise que j’ai bien activé l’astuce pour étendre la recherche sur 3 lettres.

    • Le 3 décembre 2015 à 17:34, par peetdu En réponse à : Fulltext

      Solution trouvée par Nicod_

      Il existe un dictionnaire de mots ignorés par défaut (stop words).
      La requête…

      SQL SHOW VARIABLES LIKE ’ft_stopword_file’ ;

      … doit afficher ’built-in’

      La liste par défaut (built-in) est celle-ci :
      http://dev.mysql.com/doc/refman/5.5/en/fulltext-stopwords.html

      Il faut alors modifier la config du serveur Mysql ( my.cnf) et lui indiquer dans la section [mysqld] :

      1. ft_stopword_file = ""

      À utiliser si c’est vraiment nécessaire, car cela peut augmenter le « bruit » dans les résultats.

    Répondre à ce message

  • Le 24 septembre 2015 à 18:40, par Arthur En réponse à : Fulltext

    Bonjour,

    Je voulais juste signaler que le plug-in ne fonctionne pas quand la base de données du site a été conçu en Sqlite !

    Merci !

    • Le 3 novembre 2015 à 12:57, par DD En réponse à : Fulltext

      Bonjour,

      Je pense que j’ai le même problème mais je ne sais pas ou trouver le format de ma base.
      Le plugin me dit de convertir en UTF8 mais lorsque je clique sur ce lien j’ai l’erreur : « Fichier convert_sql_utf8 introuvable »

      dd

    • Le 3 novembre 2015 à 13:02, par Fil En réponse à : Fulltext

      Ce fichier est dans le plugin « grenier ».

    • Le 4 novembre 2015 à 12:23, par DD En réponse à : Fulltext

      Trouvé, merci.

      Pour un site cela a fonctionné, pour un autre non je me retrouvais avec du contenu invisible dans l’espace public ET privé dès lors qu’il y avait un caractère accentué. J’avais déjà essayé avec Fusion de convertir sqlite en mysql sans succès. Je réessaierai un jour.

      dd

    • Le 4 novembre 2015 à 14:25, par Arthur En réponse à : Fulltext

      Re,
      Pour ceux que ca intéresse, j’ai publié sur un autre forum une solution assez simple pour convertir une base de donnée sqlite vers mysql :
      http://forum.spip.net/fr_213057.html
      J’espère que ca aidera.

    Répondre à ce message

  • Le 23 juin 2015 à 10:48, par Stanislas En réponse à : Fulltext

    Bonjour,

    Merci pour ce plugin. J’ai juste 1 remarque et 1 bidouille.

    Il me semble qu’il y a une différence entre le fonctionnement avec et sans index sur le pluriel des mots. Sans index la recherche sur « enfant » apportera aussi les articles avec le pluriel « enfants ». Ce n’est pas le cas avec fulltext. Y-a-t-il moyen de systématiquement faire ajouter à la requête une astérisque à la fin des termes sauf si l’on a mis des guillemets, pour une recherche sur un mot ou une expression précise ?

    Je n’ai pas réussi à faire fonctionner l’extraction de texte des pdf. Je suis sur un Windows, SPIP et plugin à la dernière mode. Comme je ne publie pas chaque jour des brassées de pdf, j’ai contourné en le faisant à la main. J’ai ajouté avec le plugin champ_extra un champ à la table document et j’y fais un copier coller du texte en allant le chercher sur le pdf sans autre manoeuvre que CRTL+A puis CRTL+C. C’est pas cher et ça fonctionne... :-)

    • Le 26 juin 2015 à 14:50, par Stanislas En réponse à : Fulltext

      Bon, c’est le même comportement sur contrib.spip et spip.net.

      Sur contrib, si on cherche « fulltex » cela ne retourne rien, il faut ajouter l’astérisque pour avoir des résultats.

      Le tableau d’exemples devrait illustrer ce point (ou plutôt cette étoile :) ).

    Répondre à ce message

  • Le 17 octobre 2014 à 11:34, par Fred_O En réponse à : Fulltext

    Bonjour.

    Impossible pour moi de faire une extraction de PDF, le plugin m’indiquant que pdftotext n’est pas disponible sur le serveur (CentOS 6.5), alors que le binaire est présent (testé également en indiquant en dur le chemin du binaire dans mes_options.php).
    pdftotext provient du paquet poppler.x86_64. Je précise que l’extraction fonctionne en console (loggué sur le serveur, user non root).
    Les droits d’éxécution (sudoers) ont été vérifiés et ne semblent pas poser problème
    Les logs extract.log et prive_extract.log ne sont pas très explicites et indiquent juste une erreur d’extraction, ex :


    Oct 02 15:16:45 une_adresse_ip (pid 21566) Indexation de pdf/16_mai_2013.pdf
    Oct 02 15:16:45 une_adresse_ip (pid 21566) Extraction PDF avec /usr/local/bin/pdftotext -enc Latin1 IMG/pdf/16_mai_2013.pdf
    Oct 02 15:16:45 une_adresse_ip (pid 21566) Erreur extraction IMG/pdf/16_mai_2013.pdf (code 127) :

    SPIP - v2.1.26
    Plugin FullText - v0.8.2

    Merci d’avance de votre aide.

    • Le 7 avril 2015 à 20:03, par cherif En réponse à : Fulltext

      Moi je pense que l’auteur aurait du utiliser le fonction File_exists de php. Ca sert à rien de lancer un exec sur un fichier par exemple dans windows Ca ne fonctionne pas la majorité du temps.

    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

  • Adaptive Images

    15 novembre 2013 – 66 commentaires

    Un plugin pour permettre aux sites responsive d’adapter automatiquement les images de la page à l’écran de consultation. Adaptive Images, que l’on pourrait traduire par Images adaptatives, désigne la pratique qui vise à adapter les taille, (...)

  • Métas

    8 août 2009 – 50 commentaires

    Ce petit plugin permet l’ajout, depuis l’espace privé, de metatags aux articles et rubriques de SPIP, ainsi que la mise en exergue de mots importants.

  • Brownie

    6 juillet 2012 – 43 commentaires

    Brownie est une adaptation pour Zpip du thème du même nom initialement développé par Egrappler.com. Présentation Brownie est un thème Responsive à deux colonnes. La démonstration ci-dessous utilise la version 2.0.0 de Brownie, la dist de SPIP3 (...)

  • Métas +

    3 décembre – 13 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, (...)

  • Acces Restreint 3.0

    11 décembre 2008 – 785 commentaires

    Le plugin accès restreint permet de définir et de gérer des zones de l’espace public en accès restreint. Cette version du plugin a été redévelopée et optimisée tout spécialement pour SPIP 2.0. Il en découle une amélioration des performances sur les gros (...)

Ça spipe par là