Индексирование нескольких документов и сопоставление с уникальным идентификатором Solr. - PullRequest
1 голос
/ 05 марта 2012

Мой вариант использования - индексировать 2 файла: файл метаданных и двоичный файл PDF для уникального идентификатора solr. Файл метаданных имеет содержимое в форме файла XML, и некоторые поля схемы сопоставляются с элементами в этом файле XML.

Что я делаю: извлекать содержимое из файлов PDF (используя pdftotext), обрабатывать это содержимое и извлекать конкретную информацию (пример: первая страница / строка PDF содержит информацию о лекарстве, стадии исследования). Полученная информация (медицина / стадия исследования) должна быть проиндексирована, и у нее должна быть возможность поиска / сортировки / фасета.

Я могу создать файл XML с полученной информацией (назовем это файлом метаданных). Теперь предположим, что моя схема будет

<field name="medicine" type="text" stored="true" indexed="true"/>
<field name="researchStage". ../>

Есть ли способ поместить этот файл метаданных и файл PDF в Solr?

Что я пробовал:

  1. Основываясь на предложении в архивах, я сжал эти файлы и передал ExtractRequestHandler. Мне удалось поместить весь контент в SOLR и сделать его доступным для поиска. Но это выглядит как содержимое zip-файла. (Мне пришлось применить некоторые исправления к базе кода Solr, чтобы эта работа работала). Но этого недостаточно, поскольку содержимое файла метаданных не сопоставляется с именами полей. curl "http://localhost:8983/solr/update/extract?literal.id=doc1&commit=true" -F" myfile=@file.zip "

  2. Я пытался работать с DataImportHandler (binURLdatasource). Но я не думаю, что понимаю, как это работает. Так что далеко ходить не могло.

  3. Я думал о добавлении тегов метаданных в сам PDF. Чтобы это работало, ExtractrequestHandler должен обработать эти метаданные. Я тоже не уверен в этом. Поэтому я попытался «pdftk» добавить метаданные. Не удалось добавить пользовательские теги к нему. Он только обновляет / добавляет заголовок / автора / ключевые слова и т. Д. Кто-нибудь знает аналогичный инструмент Unix.

Если у кого-то есть советы, пожалуйста, поделитесь. Я хочу избежать создания 1 файла (путем слияния PDF текст + файл метаданных).

1 Ответ

1 голос
/ 05 марта 2012

Имеется файл record1234.pdf и метаданные типа:

<metadata>
<field1>value1</field1>
<field2>value2</field2>
<field3>value3</field3>
</metadata>

. Имеет ли программный эквивалент

curl "http://localhost:8983/solr/update/extract?
literal.id=record1234.pdf
&literal.field1=value1
&literal.field2=value2
&literal.field3=value3
&captureAttr=true&defaultField=text&capture=div&fmap.div=foo_txt&boost.foo_txt=3&"  -F "tutorial=@tutorial.pdf"

Адаптировано из http://wiki.apache.org/solr/ExtractingRequestHandler#Literals.

Это создаст новую запись в индексе, содержащую вывод text из Tika / Solr CEL, а также указанные вами поля.

Вы сможете выполнять эти операции на своем любимом языке.


содержимое файла метаданных не сопоставлено с именами полей

Если они не отображаются в предварительно определенное поле, используйте динамические поля.Например, вы можете установить целое поле *_i.

Я хочу избежать создания 1 файла (путем слияния текста PDF + файла метаданных).

Это похоже на усталость программиста :-) Но у тебя есть веская причина?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...