Solr 7.5 не удается проиндексировать PDF-файлы после обновления с Solr 6.3 - PullRequest
0 голосов
/ 05 октября 2018

Мы только что обновились с Solr 6.3 до 7.5.Без изменений в схеме или конфигурации мы получаем ошибку 400 почти для каждого файла PDF, который мы пытаемся проиндексировать.Это файлы, которые у Solr 6.3 не было проблем с индексацией.Все другие типы сложных файлов индексируются, как и прежде, это только файлы pdf, вызывающие проблему.

Подсказка # 1: из ~ 1900 файлов pdf только 2 были успешно обработаны.У большинства наших PDF-файлов есть тема и заголовок, но у этих 2 нет.

Подсказка # 2: В журнале консоли мы видим сообщения об ошибках, подобные этому: RequestHandlerBaseorg.apache.solr.common.SolrException: undefined field: "pdf_docinfo_title"

Я не могу найти поле с таким именем в схеме.Поиск в Google по pdf_docinfo_title ничего полезного не дал.

1 Ответ

0 голосов
/ 05 октября 2018

Поскольку у вас нет поля с таким именем и нет определения для всех, Solr раздражает, когда Тика возвращает его документу с установленным полем pdf_docinfo_title.

Поскольку Tika обновляется между версиями Solr, если это возможно, это поле не было включено в более старую версию Tika в комплекте с 6.3, в то время как версия в комплекте с 7.5 обеспечивает это должным образом.Он представляет заголовок документа для PDF-файла.

Вы также можете использовать параметр fmap, чтобы отобразить поля из Tika в другое поле в вашей схеме:

fmap.<source_field>

Отображает (перемещает) одно имя поля на другое.Поле source_field должно быть полем во входящих документах, а значением является поле Solr для сопоставления.Пример: fmap.content=text вызывает перемещение данных в поле содержимого, созданного Tika, в текстовое поле Solr.

Вы также можете использовать параметр uprefix, чтобы модуль Tika стал префиксом для всехнеизвестные поля с общим префиксом:

uprefix

Префикс всех полей, которые не определены в схеме, с данным префиксом.Это очень полезно в сочетании с определениями динамических полей.Пример: uprefix=ignored_ будет эффективно игнорировать все неизвестные поля, сгенерированные Tika, если схема примера содержит <dynamicField name="ignored_*" type="ignored"/>

...