2012-02-06 60 views
6

我正在嘗試開始使用Apache Solr,但有些事情並不清楚。通過tutorial,我已經建立了一個正在運行的Solr實例。我感到困惑的是Solr的所有配置(模式等)都是XML格式。當他們添加示例數據時,它會顯示如何添加xml文檔(java -jar post.jar solr.xml monitor.xml)。這只是樣本格式的錯誤選擇嗎?我的意思是,他們是上傳描述文檔的數據,還是他們添加的實際文檔是.xml文件?Solr入門

我試圖添加一些書籍的.txt格式,所以如果我使用java -jar post.jar mydoc.txt,我添加它?我怎麼能添加這個文件元數據(作者,標題)呢?

這麼說,我試圖建立一個簡單的HTML頁面,文檔發佈到Solr:

<html> 
    <head></head> 
<body> 
    <form action="http://localhost:8983/solr/update?commit=true" enctype="multipart/form-data" method="post"> 
    <input type="file"> 
    <input type="submit" value="Send"> 
    </form> 
</body> 
</html> 

當我嘗試發佈一個文件,我得到這樣的迴應:

<response> 
    <lst name="responseHeader"> 
    <int name="status">0</int> 
    <int name="QTime">26</int> 
    </lst> 
</response> 

是這正確嗎?這是否意味着我已經成功添加了我的文件?如果是這樣,文件中的一個單詞就是「montagna」(這是一本意大利書,montagna意味着山......)。如果我訪問的URL

http://localhost:8983/solr/select/?q=montagna&start=0&rows=10&indent=on 

我想到的東西要返回(整個文本也許,或有關文件的一些信息),但是這是我得到:

<response> 
    <lst name="responseHeader"> 
    <int name="status">0</int> 
     <int name="QTime">1</int> 
     <lst name="params"> 
     <str name="indent">on</str> 
     <str name="start">0</str> 
     <str name="q">montagna</str> 
     <str name="rows">10</str> 
    </lst> 
    </lst> 
    <result name="response" numFound="0" start="0"/> 
</response> 

似乎並不像一場比賽給我。另外,根據to this answer,我應該能夠找回與hl.fragsize相匹配的文字。我如何將它集成到搜索字符串中?謝謝

回答

5

solr示例通過xml消息將文檔添加到索引。看看here。您提到的*.xml是因爲在文件系統上存儲了一些xml消息。這些XML消息是這樣的:

<add> 
    <doc> 
    <field name="id">UTF8TEST</field> 
    <field name="name">Test with some UTF-8 encoded characters</field> 
    <field name="manu">Apache Software Foundation</field> 
    <field name="cat">software</field> 
    <field name="cat">search</field> 
    <field name="features">No accents here</field> 
    <field name="price">0</field> 
    <!-- no popularity, get the default from schema.xml --> 
    <field name="inStock">true</field> 
    </doc> 
</add> 

這只是一種方式來表示任何類型的文件索引。每個文檔都包含一個或多個字段,依此類推。有向Solr添加文檔的不同方式,例如它也接受CSV format,但最常見的是現在的xml格式。

我認爲你並沒有索引任何東西。您可以檢查此查詢的輸出:http://localhost:8983/solr/select/?q=*:*,它將檢索您在索引中擁有的所有文檔。一個常見的錯誤也是忘記提交,但我看到你在網址中添加了commit=true參數,所以這不是你的情況。

如果你想索引的文本文件只是內容,例如,您可以有兩個字段定義架構:

  • 內容

,並使用該消息索引您的文檔:

<add> 
    <doc> 
    <field name="filename">test.txt</field> 
    <field name="content">Test with some UTF-8 encoded characters</field> 
    </doc> 
</add> 
1

瞭解術語:

Document in solr -> Row in RDBMS 
Field of document -> Column of a cell 

而Solr核當然是數據庫和巨大的表,以(可能)稀疏的方式佔用。

對於您的(特定)使用,您將爲每個文件創建一個文檔;由一個ID,文件內容等組成。


XML是組成solr操作的一種方式。 http://wiki.apache.org/solr/UpdateXmlMessages

它具有添加,刪除,提交和優化操作。添加操作包括一個或多個文檔。

<add> 
    <doc> 
    <field name="employeeId">05991</field> 
    <field name="office">Bridgewater</field> 
    <field name="skills">Perl</field> 
    <field name="skills">Java</field> 
    </doc> 
    [<doc> ... </doc>[<doc> ... </doc>]] 
</add> 

也有CSV(只添加功能),JSON(完整功能),DIH(預定數據庫進口)。

還有extracting request handler,它可以從各種豐富的文檔(DOC,DOCX,PDF)中提取內容(和元數據)。其他:有literal設置您自己的字段。


提取請求處理程序將其輸出存儲到字段text中。查詢解析器q=和熒光筆假定text的默認字段(是的,它與您所做的相關)。你可以指定他們的字段;結果solr字段也會返回給你。