Использование ElasticSearch и/или Solr в качестве хранилища данных для документов MS Office и PDF

В настоящее время я разрабатываю систему полнотекстового поиска, в которой пользователи выполняют текстовые запросы в отношении документов MS Office и PDF, а результат возвращает список документов, которые наилучшим образом соответствуют запросу. Затем пользователь будет выбирать любой возвращенный документ и просматривать этот документ в MS Word, Excel или в программе просмотра PDF.

Могу ли я использовать ElasticSearch или Solr для импорта необработанных двоичных документов (то есть .docx,.xlsx,.pdf файлов) в его "хранилище данных", а затем экспортировать документ в пользовательское устройство по команде для просмотра.

Раньше я использовал MongoDB 2.6.6 для импорта необработанных файлов в GridFS и извлеченного текста в отдельную коллекцию (коллекция содержала текстовый индекс), и это работало нормально. Тем не менее, полнотекстовый поиск MongoDB является довольно простым, и поэтому теперь я ищу либо Solr, либо ElasticSearch для выполнения более сложного поиска текста.

Ник

Ответы

Ответ 1

Оба Solr и Elasticsearch будут индексировать контент документа. Solr имеет встроенный, Elasticsearch необходим плагин. Легко в любом случае и оба используют Tika под обложками.

Ни один из них не сохранит сам документ. Вы можете попытаться заставить их сделать это, но они не предназначены для этого, и вы будете страдать.

Кроме того, ни Solr, ни Elasticsearch в настоящее время не рекомендуются в качестве основного хранилища. Они могут это сделать, но это не так важно для них, как, скажем, для реализации файловой системы.

Итак, я бы рекомендовал иметь файлы в другом месте и использовать Solr/Elasticsearch для поиска. То, где они сияют.

Ответ 2

Я бы попробовал плагин Elasticsearch. Подробности можно найти здесь:

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

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

Он построен поверх Apache Tika:

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

Тип прикрепления

Тип вложения позволяет индексировать другое поле типа "привязка" (кодируется как base64), например, форматы Microsoft Office, открыть форматы документов, ePub, HTML и т.д. (полный список можно найти здесь).

Тип вложения предоставляется как расширение плагина. Плагин - это простой zip файл, который можно загрузить и $ES_HOME/расположение плагинов. Он будет автоматически обнаружен, и будет добавлен тип привязки.

Поддерживаемые форматы документов

  • Язык разметки гипертекста

  • XML и производные форматы

  • Форматы документов Microsoft Office
  • Формат OpenDocument
  • Форматы документов iWorks
  • Формат переносимого документа
  • Электронный формат публикации
  • Формат Rich Text
  • Форматы сжатия и упаковки
  • Текстовые форматы
  • Форматы подачи и синхронизации
  • Форматы справки
  • Аудиоформаты
  • Форматы изображений
  • Видеоформаты
  • Файлы и архивы Java-классов
  • Исходный код
  • Форматы сообщений
  • Форматы САПР
  • Форматы шрифтов
  • Научные форматы
  • Исполняемые программы и библиотеки
  • Форматы криптования

Ответ 3

Относительно solr:

Если документы нужно возвращать только при поиске метаданных, Solr имеет тип поля BinaryField, в который вы можете отправить двоичную базу данных64. Запомните, что в целом люди рекомендуют не делать этого, поскольку это может увеличить ваш индекс ( Требования к оперативной памяти/производительность), и, если возможно, настройка, в которой вы храните файлы извне (и путь к файлу в solr), может быть лучшим выбором.

Если вы хотите, чтобы solr автоматически индексировал текст внутри pdf/doc - это возможно с помощью extractingrequesthandler: https://wiki.apache.org/solr/ExtractingRequestHandler

Ответ 4

Elasticsearch хранит документы (.pdfs,.docs, например) в поле _source. Он может использоваться как хранилище данных NoSQL (так же, как MongoDB).

Ответ 5

Немного опоздал на вечеринку, но это может кому-то помочь :)

У меня была похожая проблема, и некоторые исследования привели меня к fscrawler. Описание:

Этот сканер помогает индексировать двоичные документы, такие как PDF, Open Office, MS Office.

Основные характеристики:

  • Локальная файловая система (или подключенный диск) сканирует и индексирует новые файлы,
  • обновить существующие и удалить старые. Удаленная файловая система по SSH сканирует.
  • Интерфейс REST, позволяющий вам "загружать" ваши двоичные документы вasticsearch.