2011-07-14 4 views
14

Quelqu'un peut-il me diriger vers un tutoriel.Indexation PDF avec Solr

Ma principale expérience avec Solr est l'indexation de fichiers CSV. Mais je ne trouve pas d'instructions/tutoriel simples pour me dire ce que je dois faire pour indexer les fichiers PDF.

Je l'ai vu: http://wiki.apache.org/solr/ExtractingRequestHandler

Mais il me fait très peu de sens. Ai-je besoin d'installer Tika?

Im perdu - s'il vous plaît aider

Répondre

1

La partie la plus difficile de la présente obtient les méta-données à partir des fichiers PDF, à l'aide d'un outil comme Aperture simplifie ce produit. Il doit y avoir de tonnes de ces outils

Aperture est un framework Java pour l'extraction et l'interrogation de contenu en texte intégral et les métadonnées des fichiers PDF

apeture a saisi les métadonnées des fichiers PDF et stockés dans des fichiers xml .

I a analysé le fichier XML à l'aide lxml et les a affichés à Solr

4

Vous pouvez utiliser le dataImportHandler. Le DataImortHandle sera défini au solrconfig.xml, la configuration du DataImportHandler doit être réalisé dans un autre fichier de configuration XML (données-config.xml)

pour l'indexation des PDF, vous pouvez

1.) rampent la répertoire pour trouver tous ces documents PDF à l'aide du FileListEntityProcessor

2.) lire les PDF à partir d'un « contenu/index » fichier -XML, en utilisant le XPathEntityProcessor

Si vous avez la liste des choses connexes de pdf, utilisez le TikaEntityProcessor regarde ça http://solr.pl/en/2011/04/04/indexing-files-like-doc-pdf-solr-and-tika-integration/ (exemple avec ppt) et ce Solr : data import handler and solr cell

+0

Est-il possible d'afficher en quelque sorte ce contenu analysé de pdf? (Je veux dire du texte brut) – zygimantus

+1

Vous pouvez définir le champ de contenu à 'stored = true'. Si vous recherchez un document sur solr, vous pouvez imprimer le champ stocké pour l'aperçu ou la coloration syntaxique par exemple. –

+0

Vous voulez dire que ce paramètre est disponible en tant que paramètre ou est-ce une configuration? – zygimantus

0

Utilisez le Solr, ExtractingRequestHandler. Ceci utilise Apache-Tika pour analyser le fichier pdf. Je crois qu'il peut extraire les métadonnées, etc. Vous pouvez également passer vos propres métadonnées. Extracting Request Handler

14

Avec solr-4.9 (la dernière version à partir de maintenant), l'extraction de données à partir de documents riches comme pdfs, feuilles de calcul (xls, XLXS famille), des présentations (ppt, PPts), documentation (doc, txt, etc) a devenir assez simple. Les exemples de code fournis dans l'archive téléchargée de here contiennent un projet de modèle de base solr pour vous permettre de démarrer rapidement.

Les modifications de configuration nécessaires sont les suivantes:

  1. Modifier le solrConfig.xml d'inclure les lignes suivantes:

    <lib dir="<path_to_extraction_libs>" regex=".*\.jar" /> <lib dir="<path_to_solr_cell_jar>" regex="solr-cell-\d.*\.jar" />

créer un gestionnaire de requête comme suit:

<requestHandler name="/update/extract" startup="lazy" class="solr.extraction.ExtractingRequestHandler" > <lst name="defaults" /> </requestHandler>

2.Ajoutez les bocaux nécessaires de l'exemple solr à votre projet.

3.Define le schéma selon vos besoins et tirer une requête comme:

curl "http://localhost:8983/solr/collection1/update/extract?literal.id=1&literal.filename=testDocToExtractFrom.txt&literal.created_at=2014-07-22+09:50:12.234&commit=true" -F "[email protected]"

Aller au portail de l'interface graphique et requête pour voir le contenu indexé. Informez-moi si vous rencontrez des problèmes.

0
public class SolrCellRequestDemo { 
public static void main (String[] args) throws IOException, SolrServerException { 
SolrClient client = new 
HttpSolrClient.Builder("http://localhost:8983/solr/my_collection").build(); 
ContentStreamUpdateRequest req = new 
ContentStreamUpdateRequest("/update/extract"); 
req.addFile(new File("my-file.pdf")); 
req.setParam(ExtractingParams.EXTRACT_ONLY, "true"); 
NamedList<Object> result = client.request(req); 
System.out.println("Result: " +enter code here result); 
} 

Cela peut aider.

Questions connexes