Changeset 49180 in spip-zone
- Timestamp:
- Jun 29, 2011, 7:51:36 PM (10 years ago)
- Location:
- _plugins_/fulltext
- Files:
-
- 15 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/fulltext/exec/fulltext.php
r46186 r49180 24 24 25 25 echo propre(_T('fulltext:liste_tables_connues')." [->http://www.spip-contrib.net/Fulltext]."); 26 27 // lien vers le panneau de configuration de l'indexation des documents 28 $url = generer_url_ecrire('fulltext_document'); 29 echo propre(_T('fulltext:configurer_egalement_doc'))."<a href='$url'>"._T('fulltext:configuration_indexation_document')."</a>"; 26 30 27 31 echo debut_droite("", true); … … 70 74 echo Fulltext_regenerer_index($table); 71 75 72 // Reinitialiser les documents 76 // Reinitialiser les documents en erreurs 73 77 if (_request('reinitialise') == $table OR _request('reinitialise') == 'tous') 74 78 echo Fulltext_reinitialiser_document(); 79 // Reinitialiser tous les documents 80 if (_request('reinitialise') == 'document_tout') 81 echo Fulltext_reinitialiser_totalement_document(); 75 82 76 83 // Recuperation des index deja existant … … 123 130 } 124 131 132 // lien vers le panneau de configuration de l'indexation des documents 133 $url = generer_url_ecrire('fulltext_document'); 134 echo "<p><b><a href='$url'>"._T('fulltext:configuration_indexation_document')."</a></b></p>\n"; 135 125 136 $url = generer_url_ecrire(_request('exec'), 'regenerer=tous'); 126 137 echo "<p><b><a href='$url'>"._T('fulltext:regenerer_tous')."</a></b></p>\n"; … … 128 139 $url = generer_url_ecrire(_request('exec'), 'reinitialise=document'); 129 140 echo "<p><b><a href='$url'>"._T('fulltext:reinitialise_index_doc')."</a></b></p>\n"; 130 141 142 $url = generer_url_ecrire(_request('exec'), 'reinitialise=document_tout'); 143 echo "<p><b><a href='$url'>"._T('fulltext:reinitialise_totalement_doc')."</a></b></p>\n"; 131 144 // charset site 132 145 $charset = strtolower(str_replace('-','',$GLOBALS['meta']['charset'])); -
_plugins_/fulltext/extract/doc.php
r31883 r49180 9 9 // voulu ; dans le cas contraire le document sera lu comme s'il etait 10 10 // dans le charset iso-8859-1 11 11 // Extracteurs basee sur la librairie catdoc (a definir dans _FULLTEXT_DOC_EXE dans mes_options.php ou via le panneau de configuration) : http://www.wagner.pp.ru/~vitus/software/catdoc/ (version Windows : http://blog.brush.co.nz/2009/09/catdoc-windows/ ) 12 // Exemple pour utilisation en local sous Windows : define("_FULLTEXT_DOC_EXE","C:\catdoc\catdoc.exe"); 13 // Exemple pour utilisation sous Linux : define("_FULLTEXT_DOC_EXE","/usr/local/bin/catdoc"); 14 // 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 "); 15 // Les anciens developpements pour les autres librairies (metamail, wvText, antiword) ont ete conservee. 12 16 // http://doc.spip.org/@extracteur_doc 13 function extracteur_doc($fichier, &$charset ) {17 function extracteur_doc($fichier, &$charset, $bin, $opt = '') { 14 18 15 19 $charset = 'iso-8859-1'; 20 if ((defined('_FULLTEXT_DOC_EXE'))||($bin)) { 21 $exe = $bin ? $bin : _FULLTEXT_DOC_EXE; 22 } else { 23 // TODO : essayer de trouver tout seul l'executable 24 spip_log('Erreur extraction DOC : Il faut spécifier _FULLTEXT_DOC_EXE dans mes_options.php ou dans le panneau de configuration'); 25 return false; 26 } 27 if ((defined('_FULLTEXT_DOC_CMD_OPTIONS') && '' != _FULLTEXT_DOC_CMD_OPTIONS)||($opt)) { 28 $options = $opt ? ' '.$opt.' ' : ' '._FULLTEXT_DOC_CMD_OPTIONS.' '; 29 } else { 30 $options = ' '; 31 } 16 32 33 spip_log('Extraction DOC avec '.$exe, 'extract'); 34 $cmd = $exe.$options.$fichier; 35 $sortie = exec($cmd, $output, $return_var); 36 if($return_var != 0){ 37 //Erreur 38 spip_log('Erreur extraction '.$fichier.' (code '.$return_var.') : '.$erreur, 'extract'); 39 return false; 40 }else{ 41 //Go 42 spip_log('Fichier DOC '.$fichier.' a ete extrait avec '.$options,'extract'); 43 foreach($output as $out){ 44 $texte .= $out."\n"; 45 } 46 return $texte; 47 } 48 49 //Anciens developpements pour autres binaires que catdoc. Antiword devrait fonctionner avec le code ci-dessus egalement. 50 #metamail 17 51 @exec('metamail -d -q -b -c application/msword '.escapeshellarg($fichier), $r, $e); 18 52 if (!$e) return @join(' ', $r); … … 31 65 if (!$e) return @join(' ', $r); 32 66 33 # catdoc 34 # http://www.45.free.net/~vitus/ice/catdoc/ 35 @exec('catdoc '.escapeshellarg($fichier), $r, $e); 36 if (!$e) return @join(' ', $r); 37 67 68 38 69 } 39 70 ?> -
_plugins_/fulltext/extract/pdf.php
r31896 r49180 11 11 12 12 // http://doc.spip.org/@extracteur_pdf 13 function extracteur_pdf($fichier, &$charset ) {13 function extracteur_pdf($fichier, &$charset, $bin, $opt = '') { 14 14 $charset = 'iso-8859-1'; 15 15 16 16 $texte = ''; 17 17 $output = array(); 18 if (defined('_FULLTEXT_PDF_EXE')) {19 $exe = _FULLTEXT_PDF_EXE;18 if((defined('_FULLTEXT_PDF_EXE'))||($bin)) { 19 $exe = $bin ? $bin : _FULLTEXT_PDF_EXE; 20 20 } else { 21 21 // TODO : essayer de trouver tout seul l'exécutable 22 spip_log('Erreur extraction PDF : Il faut sp écifier _FULLTEXT_PDF_EXE dans mes_options.php');22 spip_log('Erreur extraction PDF : Il faut specifier _FULLTEXT_PDF_EXE dans mes_options.php ou utiliser le panneau de configuration'); 23 23 return false; 24 24 } 25 if ( defined(_FULLTEXT_PDF_CMD_OPTIONS) && '' != _FULLTEXT_PDF_CMD_OPTIONS) {26 $options = ' '._FULLTEXT_PDF_CMD_OPTIONS.' ';25 if ((defined('_FULLTEXT_PDF_CMD_OPTIONS') && '' != _FULLTEXT_PDF_CMD_OPTIONS)||($opt)) { 26 $options = $opt ? ' '.$opt.' ' : ' '._FULLTEXT_PDF_CMD_OPTIONS.' '; 27 27 } else { 28 28 $options = ' '; 29 29 } 30 spip_log('Extraction PDF avec '.$exe, 'extract');31 30 $cmd = $exe.$options.$fichier; 31 spip_log('Extraction PDF avec '.$cmd, 'extract'); 32 32 $sortie = exec($cmd, $output, $return_var); 33 33 if ($return_var != 0) { 34 34 if ($return_var == 3) { 35 $erreur = "Le contenu de ce fichier PDF est prot égé.";35 $erreur = "Le contenu de ce fichier PDF est protege."; 36 36 } 37 37 spip_log('Erreur extraction '.$fichier.' (code '.$return_var.') : '.$erreur, 'extract'); -
_plugins_/fulltext/genie/fulltext_index_document.php
r47831 r49180 1 1 <?php 2 2 function genie_fulltext_index_document_dist($t) { 3 // Ne retenir que les 50 premiers ko 4 @define('_FULLTEXT_TAILLE',50000); 3 //Recuperation de la configuration 4 $fulltext = sql_fetsel('valeur', 'spip_meta', 'nom = "fulltext"'); 5 $fulltext = unserialize($fulltext['valeur']); 6 // Ne retenir que les 50 000 premiers caracteres (ou la valeur choisie) 7 $taille_index = $fulltext['taille_index'] ? $fulltext['taille_index'] : @define('_FULLTEXT_TAILLE',50000); 5 8 6 9 $nb_docs = 5; … … 9 12 $extension = $row['extension']; 10 13 $doc = $row['fichier']; 11 spip_log('Indexation de '.$doc, 'extract'); 12 global $extracteur; 13 if (include_spip('extract/'.$extension) 14 AND function_exists($lire = $extracteur[$extension])) { 15 include_spip('inc/distant'); 16 include_spip('inc/documents'); 17 if (!$fichier = copie_locale(get_spip_doc($row['fichier']), 'test')) { 18 spip_log('Pas de copie locale de '.$row['fichier'], 'extract'); 19 return; 14 //On indexe seulement si c'est autorise 15 if(($fulltext[$extension.'_index'] == 'on')||(defined('_FULLTEXT_'.strtoupper($extension).'_EXE'))){ 16 spip_log('Indexation de '.$doc, 'extract'); 17 global $extracteur; 18 if (include_spip('extract/'.$extension) 19 AND function_exists($lire = $extracteur[$extension])) { 20 include_spip('inc/distant'); 21 include_spip('inc/documents'); 22 //Le fichier existe-t-il/est-il accessible ? 23 if (!$fichier = copie_locale(get_spip_doc($row['fichier']), 'test')) { 24 //Le fichier n'est pas accessible, on log mais on poursuit pour les autres 25 spip_log('Pas de copie locale de '.$row['fichier'], 'extract'); 26 //Et on met le statut en erreur 27 sql_updateq("spip_documents", array('extrait' => 'err'), "id_document=".intval($row['id_document'])); 28 }else{ 29 //Le fichier existe, on indexe 30 // par defaut, on pense que l'extracteur va retourner ce charset 31 $charset = 'iso-8859-1'; 32 // lire le contenu 33 $contenu = $lire(_DIR_RACINE.$fichier, $charset, $fulltext[$extension.'_bin'], $fulltext[$extension.'_opt']); 34 if (!$contenu) { 35 spip_log('Echec de l\'extraction de '.$fichier, 'extract'); 36 sql_updateq("spip_documents", array('contenu' => '', 'extrait' => 'err'), "id_document=".intval($row['id_document'])); 37 } else { 38 $contenu = substr($contenu, 0, $taille_index); 39 // importer le charset 40 include_spip('inc/charsets'); 41 $contenu = importer_charset($contenu, $charset); 42 sql_updateq("spip_documents", array('contenu' => $contenu, 'extrait' => 'oui'), "id_document=".intval($row['id_document'])); 43 } 44 } 20 45 } 21 // par defaut, on pense que l'extracteur va retourner ce charset 22 $charset = 'iso-8859-1'; 23 // lire le contenu 24 $contenu = $lire(_DIR_RACINE.$fichier, $charset); 25 if (!$contenu) { 26 spip_log('Echec de l\'extraction de '.$fichier, 'extract'); 27 sql_updateq("spip_documents", array('contenu' => '', 'extrait' => 'err'), "id_document=".intval($row['id_document'])); 28 } else { 29 $contenu = substr($contenu, 0, _FULLTEXT_TAILLE); 30 // importer le charset 31 include_spip('inc/charsets'); 32 $contenu = importer_charset($contenu, $charset); 33 sql_updateq("spip_documents", array('contenu' => $contenu, 'extrait' => 'oui'), "id_document=".intval($row['id_document'])); 46 else { 47 // inutile de parcourir un par un tous les docs avec la meme extension ! 48 sql_updateq('spip_documents', array('contenu' => '', 'extrait' => 'err'),"extrait = 'non' AND extension=".sql_quote($extension)); 49 spip_log("Impossible d'indexer tous les .$extension", 'extract'); 34 50 } 35 } 36 else { 37 // inutile de parcourir un par un tous les docs avec la meme extension ! 51 }else{ 52 // si pas autoriser inutile de parcourir un par un tous les docs avec la meme extension ! 38 53 sql_updateq('spip_documents', array('contenu' => '', 'extrait' => 'err'),"extrait = 'non' AND extension=".sql_quote($extension)); 39 spip_log("I mpossibled'indexer tous les .$extension", 'extract');54 spip_log("Interdiction d'indexer tous les .$extension", 'extract'); 40 55 } 41 56 } -
_plugins_/fulltext/inc/fulltext_exec.php
r49009 r49180 90 90 } 91 91 92 function Fulltext_reinitialiser_totalement_document() { 93 sql_updateq("spip_documents", array('contenu' => '', 'extrait' => 'non')); 94 return "<p><strong>"._T('fulltext:index_reinitialise_totalement')."</strong></p>"; 95 } 96 92 97 function Fulltext_creer_tous($tables = false) { 93 98 if(!$tables) { // Si les tables ne sont pas donnee, on va les chercher -
_plugins_/fulltext/lang/fulltext_fr.php
r45782 r49180 8 8 // A 9 9 'accents_pas_pris' => 'Les accents ne sont pas pris en compte (« déjà » ou « deja », retourneront à l\'identique « déjà », « dejà », « déja »...)', 10 'activer_indexation' => 'Activer l\'indexation des', 10 11 'asie' => 'asie', 11 12 'asterisque_terminale' => 'ne retournera rien: l\'astérisque * doit être terminale', … … 14 15 // C 15 16 'casse_indifferente' => 'La casse (minuscule/majuscule) des mots recherchés est indifférente.', 17 'configurer_egalement_doc' => 'Vous pouvez également configurer l\'indexation des documents :', 18 'configuration_indexation_document' => 'Configuration de l\'indexation des documents', 16 19 'convertir_myisam' => 'Convertir en MyISAM', 17 20 'convertir_toutes' => 'Convertir toutes les tables en MyISAM', … … 26 29 'enfantillage' => 'enfantillage', 27 30 'enfants' => 'enfants', 31 'erreur_doc_bin' => 'Vous devez renseigner le binaire à utiliser pour extraire les .doc', 32 'erreur_pdf_bin' => 'Vous devez renseigner le binaire à utiliser pour extraire les .pdf', 33 'erreur_ppt_bin' => 'Vous devez renseigner le binaire à utiliser pour extraire les .ppt', 34 'erreur_taille_index' => 'Il faut au moins indexer un caractère.', 35 'erreur_xls_bin' => 'Vous devez renseigner le binaire à utiliser pour extraire les .xls', 28 36 'et' => 'ET', 29 37 'etranger' => 'étranger', … … 34 42 'fonctionnement_recherche' => 'Fonctionnement du moteur de recherche de ce site', 35 43 'fulltext_cree' => 'FULLTEXT créé', 36 44 'fulltext_documentation' => 'Pour plus d\'information sur la configuration, consultez la documentation en ligne :', 45 46 //G 47 'general' => 'Général', 48 37 49 // I 38 50 'il_faut_myisam' => 'il faut MyISAM', … … 40 52 'index_regenere' => 'index de la table régénérés', 41 53 'index_reinitialise' => 'Les documents en erreur ont été réinitialisés', 54 'index_reinitialise_totalement' => 'Les document ont tous été réinitialisés', 42 55 'index_supprime' => 'index supprimé', 56 'infos_fulltext_document' => 'Vous pourrez ici choisir quels type dedocuments sont indexés par Fulltext et configurer les binaires utilisés et leurs options.', 57 'indiquer_chemin_bin' => 'Indiquer le chemin vers le binaire traitant l\'indexation des', 58 'indiquer_options_bin' => 'Indiquer les options pour l\'indexation des', 59 43 60 44 61 // L … … 47 64 // M 48 65 'mais_pas' => 'mais PAS', 49 66 'message_ok_configuration' => 'Enregistrement de vos préférences terminée', 67 'message_ok_update_configuration' => 'Mise à jour de vos préférences terminée', 68 69 //N 70 'necessite_version_php' => '(nécessite PHP 5.2 au minimum, ainsi que l\'option -enable-zip)', 71 'nombre_caracteres' => 'Nombre de caractères indexés (depuis le debut du document).', 72 50 73 // O 51 74 'ou_bien' => 'ou bien', 52 75 // Q 76 'que_des_exemples' => 'NB : les adresses de binaires et options proposées ici ab initio ne sont que des exemples.', 53 77 // P 54 78 'pas_index' => 'Pas d\'index FULLTEXT', … … 58 82 'regenerer_tous' => 'Régénérer tous les index FULLTEXT', 59 83 'reinitialise_index_doc' => 'Réinitialiser l\'indexation des documents en erreur', 84 'reinitialise_totalement_doc' => 'Réinitialiser l\'indexation de tous les documents', 60 85 'reserve_webmestres' => 'Page réservée aux webmestres', 61 86 'retourne' => 'Retourne les textes qui contiennent', 87 'retour_configuration_fulltext' => 'Retour à la configuration de Fulltext', 62 88 63 89 // S -
_plugins_/fulltext/plugin.xml
r47831 r49180 3 3 Fulltext 4 4 </nom> 5 <auteur>Fil </auteur>6 <version>0.6. 1</version>5 <auteur>Fil, Gael Chareyre</auteur> 6 <version>0.6.2</version> 7 7 <version_base>0.2</version_base> 8 8 <etat> … … 13 13 Indexation FULLTEXT du contenu pour accélérer le moteur de recherche 14 14 -* exploite le mode FULLTEXT SEARCH IN BOOLEAN MODE de MySQL, cf. [->http://dev.mysql.com/doc/refman/5.0/fr/fulltext-boolean.html] 15 Pour un fonctionnement optimal, il faut installer des programmes complémentaires et paramétrer leur utilisation dans <code>mes_options.php</code> : 15 Pour un fonctionnement optimal, il faut installer des programmes complémentaires et paramétrer leur utilisation dans <code>mes_options.php</code> ou via le panneau de configuration : 16 -** Tous les types de documents doivent avoir une constante de type <code>_FULLTEXT_EXT_EXE</code> de définie (ou EXT est l'extension du document) ou l'équivalent dans le panneau de configuration. 17 -** L'indexation de document est inactive par défaut (aucune constantes de définies). 16 18 -* Pour les {{PDF}} : 17 19 -** Installer [Xpdf->http://www.foolabs.com/xpdf/] … … 19 21 -*** Sur Mac OS X via [MacPorts->http://xpdf.darwinports.com/] ou avec cette [version compilée->http://users.phg-online.de/tk/MOSXS/xpdf-tools-3.dmg], 20 22 -*** Sur d'[autres OS->http://www.foolabs.com/xpdf/download.html] 21 -** D éfinir ces constantes:23 -** Définir ces constantes (ou utiliser le panneau de configuration): 22 24 -*** <code>_FULLTEXT_PDF_EXE</code> (par exemple <code>/usr/bin/pdftotext</code>) : Chemin vers l'exécutable <code>pdftotext</code> de [Xdpf->http://www.foolabs.com/xpdf/] afin de transformer les fichiers PDF en texte brut 23 25 -*** <code>_FULLTEXT_PDF_CMD_OPTIONS</code> (par exemple <code>-enc UTF-8</code>) : Options d'appel de l'exécutable 24 26 -*<code>_FULLTEXT_TAILLE</code> : Taille maximum conservée pour la version texte des fichiers (50000 par défaut) 27 -* Pour les {{DOC, PPT, XLS}} : 28 -** Installer [Catdoc->http://www.wagner.pp.ru/~vitus/software/catdoc/] 29 -*** Sur [Ubuntu/Linux->http://www.wagner.pp.ru/~vitus/software/catdoc/], 30 -*** Sur [Windows->http://blog.brush.co.nz/2009/09/catdoc-windows/] 31 -** Définir les constantes correspondantes (ou utiliser le panneau de configuration) de la meme manière que pour les PDF. 32 -* Pour les {{ODT, DOCX, PPTX, XLSX}} : 33 -** Utilise des fonctions et des classes PHP (nécessite PHP 5.2 au minimum, ainsi que l'option -enable-zip). 25 34 </description> 26 35 <lien>http://www.spip-contrib.net/Fulltext</lien> <!-- URI de documentation -->
Note: See TracChangeset
for help on using the changeset viewer.