2012-10-01 87 views
2

我需要列出solr中查詢的排名(或位置,如您所願)或每個文檔。我想看到的東西是這樣的:搜索結果中solr文檔的排名或位置

<doc> 
    <int name="field1">1</int> 
    <str name="someotherfield">blabla</str> 
    <int name="position">1</int> 
</doc> 
<doc> 
    <int name="field1">2</int> 
    <str name="someotherfield">blabla</str> 
    <int name="position">2</int> 
</doc> 
<doc> 
    <int name="field1">3</int> 
    <str name="someotherfield">blabla</str> 
    <int name="position">3</int> 
</doc> 

這是可能的嗎?或者我需要實現或找到一個插件?在結果

+1

的結果處理,豈不是最簡單的計算在前端的想法?或者您是否需要在原始XML結果中的位置? –

+0

我需要在整個結果列表中的位置,我也曾考慮過前端的東西......但是在分頁的情況下會發生什麼?那麼對於每個結果,您會看到從1到10或15的排名,或者您的頁面大小是多少?我聽說過有關Solr中的XSLT函數的一些內容,但我不確定如何使用它。 – stephanruhl

+1

在分頁的情況下,只需將「開始」參數的值添加到等級中即可。 –

回答

3

挖的源代碼好後,我我現在能夠看到每個不同的搜索動態位置..我只是增加了一個位置函數DocIterator並在子類中實現。然後,我在ReturnFields中添加了一個控制塊,用於檢查fl是否在其中有位置。它的工作方式與score類似。最後要做的是添加一個像PositionAugmenter這樣的自定義增強類 - 類似於ScoreAugmenter。然後我做了:)

感謝您大衛·費伯給我用原始的XML

-2

表字段position(除其他事項外):

...&fl=field1,field2,position 

排序position

...&sort=position desc 

此處是指他們:http://wiki.apache.org/solr/CommonQueryParameters#sort

+0

我想你錯過了一些觀點..首先沒有字段命名的位置因此佛羅里達州不返回任何位置,也爲排序我得到「排序參數字段不能找到:位置」排序功能(我使用示例數據,順便說一句)所以你的答案實際上沒有用......其他想法? – stephanruhl

+2

我不知道任何叫做位置的Solr僞字段。我認爲OP希望根據他的種類來定位(或*排名*)。 –

+0

我知道最終位置是通過分數字段來定義的,但關鍵是如何通過使用實際上是浮點值的純分數字段來獲取位置? – stephanruhl