Forum Programmation.SQL SQLite et FTS appliqué à des fichiers texte

Posté par  .
Étiquettes :
-2
10
fév.
2012

Bonjour à tous.

Je me rappelle avoir lu dans un Linux Magazine de 2011 ou 2010 un article décrivant une procédure complète visant à se servir de SQLite pour créer un moteur de recherche plein texte sur des documents texte du système de fichiers. Je n'arrive ni à mettre la main sur ce magazine ni à trouver des exemples parlants sur Internet. Quelqu'un peut-il me mettre sur la voie, S.V.P.?

Un tout grand merci d'avance,
V.

EDIT: Merci pour vos commentaires et vos lumières. Il s'agissait bien du numéro 116 de mai 2009 de GNU/Linux magazine.

Pour info, vu l'importance du projet, je suis passé à PostgreSQL pour la recherche plein texte et l'indexation du contenu de fichiers PDF. J'ai voulu le système comme ça même si je n'ai pas (trop) pris la peine de vérifier s'il existait des systèmes tout faits. Lucene ne me tentait par contre pas du tout. la solution que j'ai trouvée est d'extraire le texte des fichiers PDF avec pdf2text et de l'envoyer dans la base de données avec une tâche cron. L'accès au moteur de recherche se fait par interface web.

  • # Google m'a envoyé ici

    Posté par  (site web personnel) . Évalué à 1.

    • [^] # Re: Google m'a envoyé ici

      Posté par  . Évalué à 2.

      Merci Mali.

      Par contre j'ai du mal à comprendre la mise à jour de l'article:

      Mise à jour du 1er août 2009

      Je me suis trompé dans ma retranscription du script de l'article. En effet, dans la table docs, l'auteur de l'article gère le nom du fichier et le nom du paquet contenant ce fichier. Ce que je faisais, de manière assez idiote, était de stocker le nom du fichier, et le contenu de ce fichier. Donc, je me retrouvais avec une base de données énorme ! 1.7Go ce n'est pas rien !

      J'ai donc mis à jour le script pour récupérer le nom du package et pour le stocker dans la base de données. Je le fais au moyen d'une regex. Le code ci-dessus a été corrigé, et voici les lignes ajoutées ou modifiées :

      $file =~ m|/usr/share/doc/([^/]*)|g;
      my $package = $1;
      $sth_docs->execute( $package, $file );
      
      

      Que veut-il dire par là? Le simple fait d'insérer le nom du fichier texte dans la table suffit à SQLite d'indexer le contenu de ce même fichier? Je sais que c'est ce que je cherchais mais je ne me rappelle plus que c'était aussi simple.

    • [^] # Re: Google m'a envoyé ici

      Posté par  . Évalué à 3.

      C'est bien le numéro 116! Je vais m'empresser de retrouver ce numéro dans mes cartons :D . Encore merci, ton aide m'a été précieuse.

  • # doc officielle

    Posté par  . Évalué à 2.

    très bien foutue:

    http://www.sqlite.org/fts3.html

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.