1
I am trying to index documents (read Pdf for ex) into elastic search. 
My objective is to search documents based on matching content string. 
To extract the document content, I am using Apache Tika . 
I am not sure how should i index the document content along with document meta-data. 

Ниже приведены параметры, я могу думать:Как проиндексировать содержимое документа PDF в эластичном поиске?

  1. Должен ли я просто добавить одно поле «содержание», имеющий тип данных, как строки и просто хранить содержимое документа в виде строки там? (Но не уверен он будет работать для документов большого размера)

  2. или я должен сделать это поле двоичным и закодировать содержимое документа там. (Но это не будет найден)

Пожалуйста посоветуйте.

ответ

1

Все зависит от того, можно ли структурировать контент или нет. Например, если вы собираетесь хранить счета-фактуры (входящие файлы PDF), вы можете установить некоторые шаблоны для поиска имен компаний, адресов, товаров, цен, НДС и т. Д. И хранить эти данные в чистой форме JSON. Поиски будут быстрыми и эффективными для хранения.

С другой стороны, вы можете хранить некоторый случайный контент (или вы не знаете, что будет с ним). В этой ситуации вы должны просто прочитать все данные, которые вы можете прочитать в строке содержимого, и сохранить их «как есть». Вы по-прежнему получите полнотекстовый поиск (по ключевым словам и фразам), но не структурный поиск и порядок (companyName=ABC).

В обоих случаях я бы сохранил исходный двоичный файл где-то в файловой системе (например, my-uid-string.pdf) и подал его в виде простого файла, если это необходимо. Я предпочитаю не хранить двоичные данные в базах данных, хотя большинство из них имеют возможность сделать это.

+0

Мой вариант использования - 2-й, случайный контент. Я не знаю, что будет с конкретным файлом, но если у него есть текст, я хочу сохранить его в эластичном поиске и искать на основе этих текстов. Даже для полнотекстового поиска требуется сохранить содержимое документа в поиске эластичного изображения, и это мое беспокойство. Как сохранить содержимое документа? потому что, если я сохраню его как строку, тогда у него могут быть проблемы с большими документами. – AKS

+0

Большие строки могут храниться с помощью Elastic, но не могут быть проиндексированы в Lucene. Хотя существует механизм автоматического интерпретации больших строк как набор коротких. Вы можете начать свое исследование здесь: http://stackoverflow.com/a/28831582/5848808 - удачи! –