2014-04-15 53 views
0

最近,我問了一個關於如何檢索所有術語(倒排索引)的docids的問題。請參考this question避免Solr中的兩個查詢

現在使用查詢,

http://localhost:8983/solr/terms?terms.fl=tags&terms.sort=index 


    <response> 
<lst name="responseHeader"> 
<int name="status">0</int> 
<int name="QTime">2</int> 
</lst> 
<lst name="terms"> 
<lst name="tags"> 
<int name="AbRam">2</int> 
<int name="Amitabh">2</int> 
<int name="Anjaam">2</int> 
<int name="Aryan">2</int> 
<int name="Baazigar">2</int> 
<int name="Bachchan">2</int> 
<int name="Barry">2</int> 
<int name="Biography">2</int> 
<int name="Bollywood">2</int> 
<int name="Chakde">2</int> 
</lst> 
</lst> 
</response> 

現在,找出所有這些方面,我將作出使用solrj到Solr的索引搜索的文檔的ID。我確信我不需要查詢兩次,但找不到任何其他解決方案。是否有可能使用Lucene庫(我試圖使用Lucene訪問solr索引來查看我是否可以檢索與所有術語相對應的docid)。

回答

0

我並不完全確定這一點,但我最近也嘗試過這一點,不相信這是可能的與條款組件開箱即用。欲瞭解更多信息,請點擊this鏈接。

它說它直接使用Lucene的TermEnum遍歷術語字典。我認爲你可以嘗試挖掘源代碼並構建一個能夠完成你想要完成的組件(我也查看過你的早期文章)。

我從來沒有深入Solr的源代碼自己,但看看一些API頁面,它應該是相當容易的。使用TermEnum很容易獲得所有條款。通過這些Terms,它應該相當容易地訪問它們所屬的文檔(注意,這純粹是假設的,我沒有在Solr源代碼中進行編碼擴展)