Использование 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/расположение плагинов. Он будет автоматически обнаружен, и будет добавлен тип привязки.
Поддерживаемые форматы документов
Ответ 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.