Индексирование документов PDF в Solr без UniqueKey - PullRequest
1 голос
/ 16 июля 2011

Я хочу индексировать PDF (и другие богатые) документы. Я использую DataImportHandler.

Вот как выглядит мой schema.xml:

.........
.........
 <field name="title" type="text" indexed="true" stored="true" multiValued="false"/>
   <field name="description" type="text" indexed="true" stored="true" multiValued="false"/>
   <field name="date_published" type="string" indexed="false" stored="true" multiValued="false"/>
   <field name="link" type="string" indexed="true" stored="true" multiValued="false" required="false"/>
   <dynamicField name="attr_*" type="textgen" indexed="true" stored="true" multiValued="false"/>
........
........
<uniqueKey>link</uniqueKey>

Как видите, я установил ссылку в качестве уникального ключа, чтобы при индексации документы больше не дублировались. Теперь у меня есть пути к файлам, хранящиеся в базе данных, и я установил DataImportHandler, чтобы получить список всех путей к файлам и индексировать каждый документ. Чтобы проверить это, я использовал файл tutorial.pdf, который поставляется с примерами документов в Solr. Проблема, конечно, в этом документе PDF не будет поля «ссылка». Я думаю о том, как вручную указать путь к файлу в качестве ссылки при индексации этих документов. Я попробовал настройки data-config, как показано ниже,

 <entity name="fileItems"  rootEntity="false" dataSource="dbSource" query="select path from file_paths">
   <entity name="tika-test" processor="TikaEntityProcessor" url="${fileItems.path}" dataSource="fileSource">
     <field column="title" name="title" meta="true"/>
     <field column="Creation-Date" name="date_published" meta="true"/>
     <entity name="filePath" dataSource="dbSource" query="SELECT path FROM file_paths as link where path = '${fileItems.path}'">
       <field column="link" name="link"/>
     </entity>
   </entity>
  </entity>

где я создаю подобъект, который запрашивает имя пути и заставляет его возвращать результаты в столбце под названием «ссылка». Но я все еще вижу эту ошибку:

WARNING: Error creating document : SolrInputDocument[{date_published=date_published(1.0)={2011-06-23T12:47:45Z}, title=title(1.0)={Solr tutorial}}]
org.apache.solr.common.SolrException: Document is missing mandatory uniqueKey field: link

Можно ли как-нибудь создать поле с названием link для pdf-документов?

Это уже задавалось здесь ранее, но предоставленное решение использует ExtractRequestHandler, но я хочу использовать его через DataImportHandler.

1 Ответ

1 голос
/ 17 июля 2011

Попробуйте это:

<entity name="fileItems"  rootEntity="false" dataSource="dbSource" query="select path from file_paths">
  <field column="path" name="link"/>
  <entity name="tika-test" processor="TikaEntityProcessor" url="${fileItems.path}" dataSource="fileSource">
    <field column="title" name="title" meta="true"/>
    <field column="Creation-Date" name="date_published" meta="true"/>
  </entity>
</entity>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...