2014-01-08 51 views
2

我用來上傳和使用下列URL Word文檔編制索引..如何在Apache Solr中獲取索引Word文檔的文件名?

java -Durl=http://localhost:8983/solr/update/extract?literal.id=1 -Dtype=application/word -jar post.jar microfost_det.doc 

當我查詢Solr的指數則返回XML作爲..

http://localhost:8983/solr/collection1/select?q=microfost&wt=xml&indent=true 

的反應是:

<?xml version="1.0" encoding="UTF-8"?> 
<response> 

<lst name="responseHeader"> 
<int name="status">0</int> 
<int name="QTime">0</int> 
<lst name="params"> 
<str name="indent">true</str> 
<str name="q">microfost</str> 
<str name="_">1389196238897</str> 
<str name="wt">xml</str> 
</lst> 
</lst> 
<result name="response" numFound="1" start="0"> 
<doc> 
<str name="id">1</str> 
<date name="last_modified">1601-01-01T00:00:00Z</date> 
<str name="author">fazlan </str> 
<str name="author_s">fazlan </str> 
<arr name="content_type"> 
<str>application/msword</str> 
</arr> 
<arr name="content"> 
<str> 


This is a MSWord document. Microfost. 

</str> 
</arr> 
<long name="_version_">1456677821213573120</long></doc> 
</result> 
</response> 

現在我的問題是,我需要包含查詢文本「microfost」文檔的名稱,即microfost_det.doc ..

是否有可能得到的Word文件的名稱(即filename.doc),包含查詢的文本..

回答

0

在Solr中,默認的可搜索字段是「content」。這就是爲什麼你會得到與內容匹配的結果。首先創建一個自定義字符串字段(例如docname),修改您的schema.xml

然後重新啓動您的Solr實例。執行以下命令更新您的Solr文檔。

curl 'http://localhost:8983/solr/update?commit=true' -H 'Content-type:application/json' -d '[{"id":"1","docname":{"set":"microfost_det.doc"}}]' 

之後,執行下面的查詢,你會得到結果。

http://localhost:8983/solr/collection1/select?q=docname:microfost*&wt=xml&indent=true 

否則,當提取文件執行以下命令

java -Durl="http://localhost:8983/solr/update/extract?literal.id=1&literal.docname=microfost_det.doc" -Dtype=application/word -jar post.jar microfost_det.doc 

任何方式,您必須將文件名存儲在一個單獨的領域。

+3

謝謝..但我怎樣才能給每一個文件的名稱......這是我曾經給我在我的問題摘要中提到的命令,因爲.... * .doc ..因爲我有超過1000個文檔索引,是否可以給每個文檔名稱 –