2012-08-29 47 views
1

我想設置一些東西(在我的本地環境中),所以我可以將PDF存儲在Solr中,但是我無法使其工作。現在我正在處理Solr提供的示例文件夾中的文件。在Solr中存儲PDF

我沒有修改solr-3.6.0/example/conf中的solrconfig.xml,因爲它似乎已經按照Extracting Request Handler中的描述進行了配置。也就是說,它已經包含了這一點:

<lib dir="../../dist/" regex="apache-solr-cell-\d.*\.jar" /> 
<lib dir="../../contrib/extraction/lib" regex=".*\.jar" /> 

這:

<requestHandler name="/update/extract" 
       startup="lazy" 
       class="solr.extraction.ExtractingRequestHandler" > 
<lst name="defaults"> 
    <str name="fmap.content">text</str> 
    <str name="lowernames">true</str> 
    <str name="uprefix">ignored_</str> 
    <str name="captureAttr">true</str> 
    <str name="fmap.a">links</str> 
    <str name="fmap.div">ignored_</str> 
</lst> 

我從示例目錄中運行的Solr使用這個命令:

java -jar start.jar 

而且我試圖用這個命令將pdf發送到Solr:

java -Durl=http://localhost:8983/solr/update/extract -Dauto -jar /Applications/Solr-3.6.0/example/exampledocs/post.jar /path/to/pdf/mypdf.pdf 

如果我不作出任何/Solr-3.6.0/example/solr/conf/schema.xml改變我得到的消息:

FATAL: Solr returned an error #400 [doc=null] missing required field: id 

如果我改變屬性的值schema.xml中的id元素「需要」爲假,我得到:

FATAL: Solr returned an error #400 Document is missing mandatory uniqueKey field: id 

我認爲,如果一個元素所需的屬性在架構假,那麼我可以只發送不包含文件但顯然情況並非如此。

我也嘗試在發送該pdf的命令中添加參數-Dparams = literal.id = mypdf1但這也沒有幫助。有什麼想法嗎?

+0

有你試圖刪除-Dauto? –

+0

我做過了(我最初是這麼做的)。它沒有幫助。 – ceiroa

+1

您是否嘗試過將參數添加到像'.../extract?literal.id = mypdf1'這樣的網址? –

回答

1

我相信我的困惑是因爲你需要爲發送給Solr的文檔設置一個id,並且同時在Solr-3.6.0/example/solr/conf/schema.xml

我相信我得到的第一個錯誤是指模式中的id元素。第二個錯誤是指文檔ID。

在ZeroPage的幫助下,我能夠克服第二個錯誤,通過將文檔ID添加到URL而不是作爲單獨的參數傳遞它。該查詢現在工作對我來說:

java -Durl=http://localhost:8983/solr/update/extract?literal.id=form1 -jar /Applications/Solr-3.6.0/example/exampledocs/post.jar /path/to/pdf/form1.pdf 

如果我們想Solr的索引PDF的全部內容,我們需要添加uprefixfmap.content atrributes:

java -Durl="http://localhost:8983/solr/update/extract?literal.id=form1&uprefix=attr_&fmap.content=attr_content&commit=true" -jar /Applications/Solr-3.6.0/example/exampledocs/post.jar /path/to/pdf/form1.pdf