Forum: Rails France Recherche textuelle dans des documents

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
4f81c4625f783336298267bb2dcfc8e3?d=identicon&s=25 Tranquiliste (Guest)
on 2010-03-18 07:42
(Received via mailing list)
Bonjour,

Je souhaite pourvoir faire de la recherche de texte dans des documents
(pdf, txt, word), savez vous s'il y a des gems qui existent? Quelle
est à votre avis la meilleure façon de procéder?

Merci d'avance pour vos suggestions
Nicolas
80a781617235d6f65b1441cd36c52a83?d=identicon&s=25 ook? ook! (Guest)
on 2010-03-18 09:16
(Received via mailing list)
Hello,

Un démon Sphinx [1]  et la gem thinking_sphinx [2] dervaient pourvoir à
ton
bonheur.

[1] Homepage Sphinx : http://sphinxsearch.com/
[2] Homepage thinking-sphinx : http://freelancing-god.github.com/ts/en/

2010/3/18 Tranquiliste <nicolas.aguttes@googlemail.com>
64cefc5969da4ae702d86c9f26cb8733?d=identicon&s=25 philippe lachaise (Guest)
on 2010-03-18 09:23
(Received via mailing list)
>> Un démon Sphinx [1]  et la gem thinking_sphinx [2] dervaient pourvoir à
ton bonheur.

Puisqu'on en parle, je croyais que Sphinx causait directement à la DB
(contrairement à Ferret, par exemple).

Il serait donc possible d'indexer des documents non contenus dans un
champ
DB ?

Par ailleurs, comment sphinx filtre-t-il le formattage (.doc, .pdf,
etc.) et
même le HTML d'ailleurs, pour n'indexer que du texte ?

(Oui, je sais, RTFM, mais si qqun à déjà fait le tour de la question ça
gagne du temps ;-)
2fd0206c71a1b22a9cc6293f38537461?d=identicon&s=25 Cyril Mougel (shingara)
on 2010-03-18 10:24
(Received via mailing list)
Le 18/03/10 09:22, philippe lachaise a écrit :
>  >> Un démon Sphinx [1]  et la gem thinking_sphinx [2] dervaient
> pourvoir à ton bonheur.
>
> Puisqu'on en parle, je croyais que Sphinx causait directement à la DB
> (contrairement à Ferret, par exemple).
>
> Il serait donc possible d'indexer des documents non contenus dans un
> champ DB ?

Oui en fait il a une liaison avec la BDD pour gérer les index. Mais tu
lui donnes les infos dans son système de stockage propre.

> railsfrance@googlegroups.com
> Pour résilier votre abonnement envoyez un e-mail à l'adresse
> railsfrance-unsubscribe@googlegroups.com


--
Cyril Mougel
http://blog.shingara.fr
8458ed8e78b2660f8b839f052e20f65f?d=identicon&s=25 Nicolas Blanco (slainer68)
on 2010-03-18 13:49
(Received via mailing list)
Yo. Deux manière pour remplir Sphinx : BDD (les classiques MySQL,
Postgre) et XML. Regarder la doc officielle de Sphinx (Thinking Sphinx
aidera peut dans ce dernier cas).

Nicolas.

2010/3/18 cyrilmougel <cyril.mougel@gmail.com>:
935c6ae999384ffddd00721420cb39fc?d=identicon&s=25 Gregoire LEJEUNE (Guest)
on 2010-03-18 14:27
(Received via mailing list)
Il y a aussi Xapian (voici mon expérience sur le sujet :
http://www.algorithmique.net/Dev/2009/12/29/creer-...)
qui supporte HTML, PHP, PDF, PostScript, OpenOffice/StarOffice,
OpenDocument, Microsoft Word/Excel/Powerpoint/Works, Word Perfect,
AbiWord, RTF, DVI, Perl POD documentation, and plain text.

Greg

Le 18 mars 2010 13:48, Nicolas Blanco <slainer68@gmail.com> a écrit :
139b66112d2e2b4efafac2aefed01c2f?d=identicon&s=25 Yann KLIS (Guest)
on 2010-03-18 17:05
(Received via mailing list)
A priori Solr a l'air d'être le mieux placé pour ça (lorsqu'on ne veut
indexer que du contenu BDD on préféère Sphinx par ici).

++

yk

Le 18 mars 2010 07:41, Tranquiliste <nicolas.aguttes@googlemail.com> a
écrit
:
64cefc5969da4ae702d86c9f26cb8733?d=identicon&s=25 philippe lachaise (Guest)
on 2010-03-18 17:38
(Received via mailing list)
Et plus personne ne semble parler de Ferret. C'est mort ?
139b66112d2e2b4efafac2aefed01c2f?d=identicon&s=25 Yann KLIS (Guest)
on 2010-03-18 17:43
(Received via mailing list)
Il est mort le 13 mars 2010 à Aubenas en Ardèche.

++

yk

Le 18 mars 2010 17:37, philippe lachaise <philippe.lachaise@gmail.com> a
écrit :
4f81c4625f783336298267bb2dcfc8e3?d=identicon&s=25 Tranquiliste (Guest)
on 2010-03-18 18:33
(Received via mailing list)
Merci à tous pour vos réponses. Je vais jeter un coup d'oeil à tout
ça(et je reviens vers vous avec de nouvelles questions;))

Nicolas
E8ea895a56fb370bd3f678f774fe290a?d=identicon&s=25 Julien Biard (brasco)
on 2010-03-19 15:33
(Received via mailing list)
Bonjour Nicolas,

J'ai réalisé récemment pour un client une base de connaissance.
L'objectif était de donner la possibilité à l'utilisateur de créer un
article accompagné ou non d'un fichier joint (DOC, PDF, XLS...).

Pour l'indexation de contenu, j'ai utilisé Xapian couplé à Xapit et pour
extraire le contenu des fichiers joints, j'ai utilisé PDFReader car
j'avais pour obligation de mettre en place un processus de
transformation vers du PDF.

La mise en place de Xapian/Xapit est relativement simple, et c'est très
puissant notamment au travers des facets (bien que j'ai été obligé de
faire un monkey patch).

En point négatif, c'est que la synchronisation de la base ne fonctionne
pas correctement avec Passenger de base, mais au moyen d'un petit patch
tu peux la reconstruire de manière différentielle à intervalle de temps
régulier.

En espérant que ça puisse t'aider,

Julien


Tranquiliste wrote:
> Merci à tous pour vos réponses. Je vais jeter un coup d'oeil à tout ça
> (et je reviens vers vous avec de nouvelles questions;))
>
> Nicolas
>

--
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
railsfrance@googlegroups.com
Pour résilier votre abonnement envoyez un e-mail à l'adresse
railsfrance-unsubscribe@googlegroups.com

To unsubscribe from this group, send email to
railsfrance+unsubscribegooglegroups.com or reply to this email with the
words "REMOVE ME" as the subject.
4f81c4625f783336298267bb2dcfc8e3?d=identicon&s=25 Tranquiliste (Guest)
on 2010-03-19 21:51
(Received via mailing list)
Merci Julien,

Dis moi quand tu fais une recherche cela te renvoie quel niveau
d'information le nom du document, la page ou se trouve le mot,...

Nicolas

--
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
railsfrance@googlegroups.com
Pour résilier votre abonnement envoyez un e-mail à l'adresse
railsfrance-unsubscribe@googlegroups.com

To unsubscribe from this group, send email to
railsfrance+unsubscribegooglegroups.com or reply to this email with the
words "REMOVE ME" as the subject.
E8ea895a56fb370bd3f678f774fe290a?d=identicon&s=25 Julien Biard (brasco)
on 2010-03-21 18:32
(Received via mailing list)
Lorsque tu fais une recherche avec Xapit
(http://github.com/ryanb/xapit), il te renvoie une Xapit::Collection qui
est un objet qui encapsule les facets, les facets appliquées, les
suggestions et la collection de résultats comme le fait classiquement
les AR::Base.find . Par ailleurs, cet objet implémente aussi "les
méthodes qui vont bien" pour will_paginate.

Tranquiliste wrote:
> Merci Julien,
>
> Dis moi quand tu fais une recherche cela te renvoie quel niveau
> d'information le nom du document, la page ou se trouve le mot,...
>
> Nicolas
>

--
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
railsfrance@googlegroups.com
Pour résilier votre abonnement envoyez un e-mail à l'adresse
railsfrance-unsubscribe@googlegroups.com

To unsubscribe from this group, send email to
railsfrance+unsubscribegooglegroups.com or reply to this email with the
words "REMOVE ME" as the subject.
4f81c4625f783336298267bb2dcfc8e3?d=identicon&s=25 Tranquiliste (Guest)
on 2010-03-23 09:53
(Received via mailing list)
Pas sur de comprendre ce que c'est que les facet. Mais j'ai prévu de
faire une série de tests dans le prochains jours pour comprendre ce
que ça donne et ce que je peux faire

Nicolas

--
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
railsfrance@googlegroups.com
Pour résilier votre abonnement envoyez un e-mail à l'adresse
railsfrance-unsubscribe@googlegroups.com

To unsubscribe from this group, send email to
railsfrance+unsubscribegooglegroups.com or reply to this email with the
words "REMOVE ME" as the subject.
E8ea895a56fb370bd3f678f774fe290a?d=identicon&s=25 Julien Biard (brasco)
on 2010-03-23 10:27
(Received via mailing list)
Les facets sont ce que l'on pourrait appeler des critères discriminants
à ta
recherche.

Je prends l'exemple d'une base de données qui recence des chiens, tu
tapes
le mot clef 'kiki'.

Tu obtiens 30 résultats et les facets suivantes :

poids [5-10kg (10), 10-15kg (20)]
race [caniche (10), colley (1), yorkshire (19)]

Ces facets vont te permettre d'affiner ta recherche en appliquant un
critère
supplémentaire (comme ici la race) et d'avoir ainsi une recherche de
plus en
plus précise au fur et à mesure que tu appliques des facets. Au final,
tu
pourras avoir le 'kiki' qui t'intéresse plus rapidement que s'il n'y
avait
pas de facets.

Le 23 mars 2010 09:52, Tranquiliste <nicolas.aguttes@googlemail.com> a
écrit
:

> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
> railsfrance@googlegroups.com
> Pour résilier votre abonnement envoyez un e-mail à l'adresse
> railsfrance-unsubscribe@googlegroups.com
>
> To unsubscribe from this group, send email to railsfrance+
> unsubscribegooglegroups.com or reply to this email with the words "REMOVE
> ME" as the subject.
>

--
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance"
de Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
railsfrance@googlegroups.com
Pour résilier votre abonnement envoyez un e-mail à l'adresse
railsfrance-unsubscribe@googlegroups.com

To unsubscribe from this group, send email to
railsfrance+unsubscribegooglegroups.com or reply to this email with the
words "REMOVE ME" as the subject.
4f81c4625f783336298267bb2dcfc8e3?d=identicon&s=25 Tranquiliste (Guest)
on 2010-04-16 09:45
(Received via mailing list)
Bonjour,

Je suis en train de faire des tests avec Xapian/Xapit et je me pose
plusieurs questions:

1- comment passer un document à indexer, sachant que j'utilise
paperclip.
Pour l'instant j'ai fait un truc comme suit
  xapit do |index|
    index.text :title, :txt_document
  end

et
  def txt_document
    if document_content_type == 'application/pdf' or
document_content_type == 'text/plain'
      return File.new(RAILS_ROOT+'/public'+document.url)
    end
  end

Mais ça ne donne pas vraiment de résultat (j'ai aussi essayé avec
File.open).

2- avez vous noté que quand on utilise une wildcard (*), s'il n'y a
pas de résultat c'est l'ensemble de la base qui est donnée comme
résultat

3- y a-t-il une option pour rendre xapian insensible aux accents ou
faut il que je le gère au niveau de mon modèle?

Merci d'avance.
Nicolas

--
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
railsfrance@googlegroups.com
Pour résilier votre abonnement envoyez un e-mail à l'adresse
railsfrance-unsubscribe@googlegroups.com

Subscription settings:
http://groups.google.com/group/railsfrance/subscribe?hl=fr
4f81c4625f783336298267bb2dcfc8e3?d=identicon&s=25 Tranquiliste (Guest)
on 2010-04-16 09:53
(Received via mailing list)
Bonjour, je suis en train de faire des tests avec Xapian/Xapit et je
me demandais comment passer un document à indexer, sachant que
j'utilise paperclip.
Pour l'instant j'ai fait un truc comme suit
  xapit do |index|
    index.text :title, :txt_document
  end

et
  def txt_document
    if document_content_type == 'application/pdf' or
document_content_type == 'text/plain'
      return File.new(RAILS_ROOT+'/public'+document.url)
    end
  end

Mais ça ne donne pas vraiment de résultat (j'ai aussi essayé avec
File.open).

Merci d'avance
Nicolas

--
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
railsfrance@googlegroups.com
Pour résilier votre abonnement envoyez un e-mail à l'adresse
railsfrance-unsubscribe@googlegroups.com

Subscription settings:
http://groups.google.com/group/railsfrance/subscribe?hl=fr
4f81c4625f783336298267bb2dcfc8e3?d=identicon&s=25 Tranquiliste (Guest)
on 2010-04-16 11:38
(Received via mailing list)
J'ai l'impression que contrairement à ce que je croyais, xapian ne
sait pas lire directement des pdf, j'arrive à indexer du rtf et du txt
en faisant

      return File.new(RAILS_ROOT+'/public'+document.url).read

Mais pas un pdf. Pouvez vous me le confirmer?

--
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
railsfrance@googlegroups.com
Pour résilier votre abonnement envoyez un e-mail à l'adresse
railsfrance-unsubscribe@googlegroups.com

Subscription settings:
http://groups.google.com/group/railsfrance/subscribe?hl=fr
E8ea895a56fb370bd3f678f774fe290a?d=identicon&s=25 Julien Biard (brasco)
on 2010-04-16 12:14
(Received via mailing list)
Bonjour,

Il faut utiliser pour cela la gem pdf-reader
(http://github.com/yob/pdf-reader) afin d'extraire le texte brut :


receiver = PageTextReceiver.new
PDF::Reader.file(document.path, receiver)
receiver.content.join(' ')


avec PageTextReceiver :


require "pdf/reader"

class PageTextReceiver
   attr_accessor :content

   def initialize
     @content = []
   end

   # Called when page parsing starts
   def begin_page(arg = nil)
     @content << ""
   end

   # record text that is drawn on the page
   def show_text(string, *params)
     @content.last << string.strip
   end

   # there's a few text callbacks, so make sure we process them all
   alias :super_show_text :show_text
   alias :move_to_next_line_and_show_text :show_text
   alias :set_spacing_next_line_show_text :show_text

   # this final text callback takes slightly different arguments
   def show_text_with_positioning(*params)
     params = params.first
     params.each { |str| show_text(str) if str.kind_of?(String)}
   end
end



Pour les fichiers TXT :

File.read(document.path)


Pour le RTF, je pense qu'il faudrait enlever tout ce qui concerne la
mise en forme, car cela risque de polluer tes données.

Sinon un petit conseil avec Paperclip tu as la méthode path sur les
assets, donc au lieu de :

RAILS_ROOT+'/public'+document.url

tu as :

document.path



Julien


On 16/04/10 11:37, Tranquiliste wrote:
> J'ai l'impression que contrairement à ce que je croyais, xapian ne
> sait pas lire directement des pdf, j'arrive à indexer du rtf et du txt
> en faisant
>
>        return File.new(RAILS_ROOT+'/public'+document.url).read
>
> Mais pas un pdf. Pouvez vous me le confirmer?
>

--
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
railsfrance@googlegroups.com
Pour résilier votre abonnement envoyez un e-mail à l'adresse
railsfrance-unsubscribe@googlegroups.com

Subscription settings:
http://groups.google.com/group/railsfrance/subscribe?hl=fr
4f81c4625f783336298267bb2dcfc8e3?d=identicon&s=25 Tranquiliste (Guest)
on 2010-04-16 16:23
(Received via mailing list)
Merci Julien, c'est très sympa de me répondre de façon aussi
détaillée.

Nicolas

--
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
railsfrance@googlegroups.com
Pour résilier votre abonnement envoyez un e-mail à l'adresse
railsfrance-unsubscribe@googlegroups.com

Subscription settings:
http://groups.google.com/group/railsfrance/subscribe?hl=fr
4f81c4625f783336298267bb2dcfc8e3?d=identicon&s=25 Tranquiliste (Guest)
on 2010-04-18 10:37
(Received via mailing list)
Hello,

Ma recherche fonctionne a peu près (j'ai utilisé pdftotext car je
trouvais que ça me donnait de meilleurs résultats sur des documents
scannés), par contre je me demande comment vous avez géré les accents
(j'ai des caractères bizarres propri�t�) est ce en transcodant avant
l'indexation et avant la recherche? ou y a-t-il un autre moyen?

Merci
Nicolas

--
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance"
de Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
railsfrance@googlegroups.com
Pour résilier votre abonnement envoyez un e-mail à l'adresse
railsfrance-unsubscribe@googlegroups.com

Subscription settings:
http://groups.google.com/group/railsfrance/subscribe?hl=fr
A6ec52c828542f69fcbe8ae1b6060250?d=identicon&s=25 Cédric Brancourt (Guest)
on 2010-04-18 11:17
(Received via mailing list)
Je dirais que tu devrais t'assurer de l'encodage de tes documents en
entrée
de ton application. Donc avant l'indexation. Un petit coups de iconv ...

Le 18 avril 2010 08:36, Tranquiliste <nicolas.aguttes@googlemail.com> a
écrit :
4f81c4625f783336298267bb2dcfc8e3?d=identicon&s=25 Tranquiliste (Guest)
on 2010-04-18 12:51
(Received via mailing list)
C'est effectivement à iconv que je pensais

Merci

--
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
railsfrance@googlegroups.com
Pour résilier votre abonnement envoyez un e-mail à l'adresse
railsfrance-unsubscribe@googlegroups.com

Subscription settings:
http://groups.google.com/group/railsfrance/subscribe?hl=fr
4f81c4625f783336298267bb2dcfc8e3?d=identicon&s=25 Tranquiliste (Guest)
on 2010-04-23 12:56
(Received via mailing list)
Bonjour,

Pour ceux qui ont utilisé Xapian (1.0.16)/Xapit avez vous remarqué que
lorsque que vous utilisez une wildcard et qu'il n'y a aucun résultat,
xapian/xapit retourne l'ensemble de la base?

--
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
railsfrance@googlegroups.com
Pour résilier votre abonnement envoyez un e-mail à l'adresse
railsfrance-unsubscribe@googlegroups.com

Subscription settings:
http://groups.google.com/group/railsfrance/subscribe?hl=fr
This topic is locked and can not be replied to.