1
我想索引PDF(以及其他豐富)文檔。我正在使用DataImportHandler。在Solr中索引不帶唯一鍵的PDF文檔
這裏是我的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設置爲獲取所有文件路徑的列表併爲每個文檔編制索引。爲了測試它,我使用了Solr中示例文檔附帶的tutorial.pdf文件。問題當然這個pdf文件不會有字段「鏈接」。我正在考慮如何在索引這些文檔時手動將文件路徑設置爲鏈接。我嘗試了數據的配置設置如下,
<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
有沒有反正我創建一個稱爲鏈接的pdf文件的字段?
此前已被問到here,但提供的解決方案使用了ExtractRequestHandler,但我想通過DataImportHandler使用它。
它的工作。謝謝! – sabman