Как мне индексировать содержимое документа pdf в упругом поиске?

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.

Ниже приведены варианты, которые я могу придумать:

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

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

Пожалуйста, порекомендуйте.

1 ответ

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

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

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

Другие вопросы по тегам