Au départ c'était une question, mais puisque j'ai réussi à me dépatouiller
j'envoie quand même le message: Quelqu'un sera peut-être intéressé par
la solution ...
Bonjour,
J'essaie de faire fonctionner l'indexation des pdf ... sans sucès.
Voici ce que j'obtiens dans le log après avoir créé
un article en y joignant un pdf (XXX.pdf):
May 07 10:12:05 127.0.0.1 (pid 6361) ajout du document XXX.pdf, document
(article 11 )
May 07 10:12:06 127.0.0.1 (pid 6361) demande indexation document 10
May 07 10:12:06 127.0.0.1 (pid 6361) redirige
ecrire/articles.php3?id_article=11&show_docs=10#documents
May 07 10:12:50 127.0.0.1 (pid 6360) demande indexation document 10
May 07 10:12:54 127.0.0.1 (pid 6359) indexation document 10
May 07 10:12:55 127.0.0.1 (pid 6359) cron: index (0.49s)
May 07 10:13:11 127.0.0.1 (pid 6362) demande indexation article 11
May 07 10:13:13 127.0.0.1 (pid 6362) mail (michel.pottier...):
[Soprano] PUBLIE : Voici un pdf, from <michel.pottie...>
Il se trouve que la recherche ne me permet pas de retrouver
le document.
Je suis alors allé jeter un coup d'oeuil dans
les tables mysql j'y trouve des infos du type:
select * from spip_index_documents where id_document=10;
+----------------------+--------+-------------+
| hash | points | id_document |
+----------------------+--------+-------------+
| 14392593763983616836 | 10 | 10 |
| 13121920672640022101 | 10 | 10 |
| 14151377962640465093 | 1 | 10 |
| 11426299191147925695 | 2 | 10 |
| 8711985890937787662 | 1 | 10 |
....
| 1951846506361624424 | 1 | 10 |
+----------------------+--------+-------------+
23 rows in set (0.00 sec)
Je ne connais rien du modèle de donnée, mais si j'essaie
de faire une mise en relation entre spip_index_dico et
spip_index_documents j'obtiens:
mysql> select dico from spip_index_dico,spip_index_documents where
-> spip_index_dico.hash=spip_index_documents.hash
-> and spip_index_documents.id_document=10;
+--------------+
| dico |
+--------------+
| format |
| this |
| message |
| contains |
| data |
| unrecognized |
| application |
| which |
| being |
| decoded |
| written |
| file |
...
| cma74x |
+--------------+
23 rows in set (0.01 sec)
Malheureusement le pdf est un texte en français, et les mots ci-dessus
référencés n'y figurent pas:
[michel@zagreb Nicolas]$ pdftotext XXX.pdf
[michel@zagreb Nicolas]$ grep format XXX.txt
[michel@zagreb Nicolas]$
Mais ils peuvent ressembler à un message d'erreur.
J'ai donc édité le fichier extract_pdf.php
et j'ai lancé la commande
metamail -d -q -b -c application/pdf XXX.pdf en tant que root
j'obtiens:
"You can not run MetaMail as root unless you use -r or set MM_RUNASROOT."
alors avec l'option adéquate je retrouve une partie des mots indexés:
"This message contains data in an unrecognized format,
application/pdf,which is being decoded and written
to the file named "/tmp/mm.vMmztP".If you do not want this data,
you probably should delete that file."
J'ai donc chercher le fichier mailcap et ajouté la ligne magique:
application/pdf; xpdf %s
et là, magique, après insertion d'un nouveau pdf:
mysql> select dico from spip_index_dico,spip_index_documents where
-> spip_index_dico.hash=spip_index_documents.hash
-> and spip_index_documents.id_document=11;
+-----------------+
| dico |
+-----------------+
| site |
| faut |
| bien |
| phase |
| base |
| configuration |
| linux |
| 2006 |
....
| blocs |
| armoires |
+-----------------+
349 rows in set (0.03 sec)
Mais la recherche ne donne toujours rien!!!
Pour que cela marche il suffit de rajouter une boucle sur les
documents/articles dans le fichier recherche.html
Bonne journée