Solr pdf index неверный запрос
Я хотел бы иметь простую настройку Solr, где я могу индексировать и искать большие папки файлов PDF / DOCX. В основном мне нужен только полнотекстовый поиск, не нужно разделять поля, а исходные документы в любом случае не имеют четко определенной структуры. Я следую https://lucene.apache.org/solr/quickstart.html что довольно просто, однако, когда я пытаюсь проиндексировать свою собственную папку с некоторыми PDF-файлами, некоторые файлы возвращают ошибку, например:
POSTing file G1504225.pdf (application/pdf) to [base]/extract
SimplePostTool: WARNING: Solr returned an error #400 (Bad Request) for
url: http://localhost:8983/solr/gettingstarted/update/extract?
resource.name=%2Fhome%2Fsolr%2Fsolr-6.5.1%2F..%2Ftrain_data%2FG1504225.pdf&literal.id=%2Fhome%2Fsolr%2Fsolr-6.5.1%2F..%2Ftrain_data%2FG1504225.pdf
SimplePostTool: WARNING: Response: <?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">400</int><int
name="QTime">263</int></lst><lst name="error"><lst name="metadata"><str
name="error-class">org.apache.solr.common.SolrException</str><str
name="root-error-class">java.lang.NumberFormatException</str><str
name="error-class">org.apache.solr.update.processor.DistributedUpdateProcessor$DistributedUpdatesAsyncException</str><str name="root-error-class">org.apache.solr.update.processor.DistributedUpdateProcessor$DistributedUpdatesAsyncException</str></lst><str name="msg">Async exception during distributed update: Error from server at http://127.0.1.1:8983/solr/gettingstarted_shard2_replica1: Bad Request
request:
http://127.0.1.1:8983/solr/gettingstarted_shard2_replica1/update?update.chain=add-unknown-fields-to-the-schema&update.distrib=TOLEADER&distrib.from=http%3A%2F%2F127.0.1.1%3A8983%2Fsolr%2Fgettingstarted_shard1_replica1%2F&wt=javabin&version=2
Remote error message: ERROR: [doc=/home/solr/solr-6.5.1/../train_data/G1504225.pdf] Error adding field 'title'='United Nations' msg=For input string: "United Nations"</str><int name="code">400</int></lst>
</response>
SimplePostTool: WARNING: IOException while reading response:
java.io.IOException: Server returned HTTP response code: 400 for URL:
http://localhost:8983/solr/gettingstarted/update/extract?
resource.name=%2Fhome%2Fsolr%2Fsolr-6.5.1%2F..%2Ftrain_data%2FG1504225.pdf&literal.id=%2Fhome%2Fsolr%2Fsolr-6.5.1%2F..%2Ftrain_data%2FG1504225.pdf
Большинство файлов в порядке, и я могу их искать. Есть идеи?
1 ответ
Solr использует Tika для извлечения текста из этих файлов. Некоторые типы файлов, особенно pdf, трудно анализировать, так как это собственный формат, и Tika всегда пытается отследить крайние случаи и т. Д. Так что некоторые файлы обычно выдают ошибки. Вы должны ожидать этого.
Посмотрите, сколько экземпляров NumberFormatException/pdfbox найдено...(pdfbox - это библиотека, которую Тика использует для файлов pdf).
Если вы действительно хотите получить весь текст из всех pdf, даже те, которые содержат ошибки, вы можете поместить их в специальную папку и обработать их снова, извлекая текст самостоятельно с помощью другой библиотеки, разные библиотеки будут иметь разные результаты одного и того же pdf, так что вы можете использовать надмножество текста, созданного несколькими библиотеками. Но для этого вам придется написать некоторый связующий код, если только Tika не позволит вам подключить определенные библиотеки для определенных типов файлов (не уверен, что сейчас это так, раньше этого не было).