web-dev-qa-db-fra.com

Utilisation d'ElasticSearch et / ou de Solr comme banque de données pour MS Office et PDF documents

Je suis en train de concevoir un système de recherche de texte intégral dans lequel les utilisateurs effectuent des requêtes de texte sur MS Office et PDF documents, et le résultat renverra une liste de documents qui correspondent le mieux à la requête. L'utilisateur être de sélectionner n'importe quel document retourné et de visualiser ce document dans MS Word, Excel ou une visionneuse PDF.

Puis-je utiliser ElasticSearch ou Solr pour importer les documents binaires bruts (c'est-à-dire les fichiers .docx, .xlsx, .pdf) dans son "magasin de données", puis exporter le document sur l'appareil de l'utilisateur sur commande pour affichage.

Auparavant, j'utilisais MongoDB 2.6.6 pour importer les fichiers bruts dans GridFS et le texte extrait dans une collection séparée (la collection contenait un index de texte) et cela fonctionnait bien. Cependant, la recherche de texte intégral MongoDB est assez basique et donc je regarde maintenant Solr ou ElasticSearch pour effectuer une recherche de texte plus complexe.

Pseudo

19
ngekas

Solr et Elasticsearch indexeront le content du document. Solr a cela intégré, Elasticsearch a besoin d'un plugin. Facile dans les deux cas et les deux utilisent Tika sous les couvertures.

Aucun d'eux ne stockera le document lui-même. Vous pouvez essayer de les faire faire, mais ils ne sont pas conçus pour cela et vous en souffrirez.

De plus, ni Solr ni Elasticsearch ne sont actuellement recommandés comme stockage principal. Ils peuvent le faire, mais ce n'est pas aussi critique pour eux que - disons - pour une implémentation d'un système de fichiers.

Donc, je recommanderais d'avoir les fichiers ailleurs et d'utiliser Solr/Elasticsearch pour la recherche uniquement. C'est là qu'ils brillent.

22

Je voudrais essayer le plugin de pièce jointe Elasticsearch. Les détails peuvent être trouvés ici:

https://www.elastic.co/guide/en/elasticsearch/plugins/2.2/mapper-attachments.html

https://github.com/elasticsearch/elasticsearch-mapper-attachments

Il est construit sur Apache Tika:

http://tika.Apache.org/1.7/formats.html

Type de pièce jointe

Le type de pièce jointe permet d'indexer différents champs de type "pièce jointe" (codés en base64), par exemple, les formats Microsoft Office, les formats de document ouverts, ePub, HTML, etc. (la liste complète peut être trouvée ici).

Le type de pièce jointe est fourni comme une extension de plugin. Le plugin est un simple fichier Zip qui peut être téléchargé et placé sous l'emplacement de $ ES_HOME/plugins. Il sera automatiquement détecté et le type de pièce jointe sera ajouté.

Formats de document pris en charge

  • Langage Signalétique Hyper Text

  • XML et formats dérivés

  • Formats de document Microsoft Office
  • Format OpenDocument
  • formats de document iWorks
  • Portable Document Format
  • Format de publication électronique
  • Format RTF
  • Formats de compression et d'emballage
  • Formats de texte
  • Formats de flux et de syndication
  • Formats d'aide
  • Formats audio
  • Formats d'image
  • Formats vidéo
  • Fichiers et archives de classe Java
  • Code source
  • Formats de courrier
  • Formats CAO
  • Formats de police
  • Formats scientifiques
  • Programmes et bibliothèques exécutables
  • Formats cryptographiques
14
John Petrone

Elasticsearch stocke les documents (.pdfs, .docs par exemple) dans le _source champ. Il peut être utilisé comme une banque de données NoSQL (identique à MongoDB).

0
Jeff

Concernant solr:

Si les documents doivent uniquement être renvoyés lors de recherches de métadonnées, Solr propose un type de champ BinaryField, auquel vous pouvez envoyer une base de données binaire64 encodée.N'oubliez pas qu'en général, les gens déconseillent de le faire, car cela peut augmenter votre index (exigences en RAM/performances), et si possible une configuration où vous stockez les fichiers en externe (et le chemin d'accès au fichier dans solr) pourrait être un meilleur choix.

Si vous voulez que solr indexe automatiquement le texte dans le pdf/doc - c'est possible avec le extractingrequesthandler: https://wiki.Apache.org/solr/ExtractingRequestHandler

0
Alegis

Un peu tard pour la fête mais cela peut aider quelqu'un :)

J'ai eu un problème similaire et certaines recherches m'ont conduit à fscrawler . La description:

Ce robot permet d'indexer des documents binaires tels que PDF, Open Office, MS Office.

Caractéristiques principales:

  • Le système de fichiers local (ou un lecteur monté) explore et indexe les nouveaux fichiers,
  • mettre à jour ceux existants et supprimer les anciens. Système de fichiers distant via l'analyse SSH.
  • Interface REST pour vous permettre de "télécharger" vos documents binaires vers elasticsearch.
0
Nick