2011-07-15 74 views
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使用它。

回答

1

試試這個:

<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> 
+0

它的工作。謝謝! – sabman