2011-11-12 46 views
0

我正在使用幾天前的Solr 4 trunk build。Apache Solr topTerms(LukeRequestHandler)沒有給出正確的令牌計數

根據LukeRequestHandler的Wiki頁面(第一個示例輸出),我們應該得到每個或任何指定字段的標記計數。我想用這個數來計算我所有文檔中每個單詞出現的次數。例如,如果字「是」會出現兩個MS Word文檔,兩次在第一和第二三次,我會得到這樣的輸出:

<lst name="text"> 
    <str name="type">text</str> 
    <str name="schema">IT-M---------</str> 
    <str name="index">(unstored field)</str> 
    <int name="docs">2</int> 
    <int name="distinct">42</int> 
    <lst name="topTerms"> 
    <int name="is">5</int> 

這是因爲這個詞「是」發生兩份文件共五次。但是我實際得到的是<int name="is">2</int>。我認爲這是因爲它發生明顯(由文件)總共兩次。

但是,根據維基,我們應該得到一個總數,總結所有的文件,這是我真正想要的。


我怎樣才能獲得的每一個字次的所有索引文檔總數出現


參考:由TermsComponent返回

http://wiki.apache.org/solr/LukeRequestHandler

回答

1

文檔頻率的匹配術語,獨特的文件,其中包括已被標記爲刪除,但尚未移除的任何文檔的數量來自索引。

TermVectorComponent提供有關在字段上設置termVector屬性時存儲的文檔的信息。
TVC可以返回術語矢量,術語頻率,逆文檔頻率以及位置和偏移信息。

tv.tf - 返回文檔中每個術語的文檔術語頻率信息。

<lst name="termVectors"> 
    <lst name="doc-5"> 
    <str name="uniqueKey">MA147LL/A</str> 
    <lst name="includes"> 
     <lst name="cable"> 
     <int name="tf">1</int> 
     </lst> 
     <lst name="earbud"> 
     <int name="tf">5</int> 
     </lst> 
     <lst name="headphones"> 
     <int name="tf">1</int> 
     </lst> 
     <lst name="usb"> 
     <int name="tf">1</int> 
     </lst> 
    </lst> 
    </lst> 
    ............... 
</lst> 
+0

這太棒了,我終於得到了總計字數,但它只對每個文件。有沒有辦法獲得一個XML密鑰下所有文檔中所有單詞的總數?否則,當然我可以通過編程方式將它們組合起來,但我仍然會想象如果Solr能夠通過特殊查詢來做到這一點,它會更便宜。謝謝。 – deed02392

+0

我懷疑是否有直接的API。 – Jayendra