2010-02-24 42 views
3

即使在傳遞分類字段之後,文檔分數也會影響搜索結果的排序順序。有沒有辦法讓lucene在特定的排序字段被傳遞時忽略文檔分數?影響結果排序順序的文檔分數,Lucene

對於前:

DocId Score  SortFieldA  SortFieldB 
    1  23.0041  200906030800  Test 
    2  32.2774  200906020800  Test 
    3  21.0632  200906030800  Apple 

我想要的結果通過SortFieldA,然後再進行排序由SortFieldB。因此,在上述情況下,結果應以doc2,doc3和doc1的形式返回。但由於得分,排序順序受到干擾。

我注意到,如果文檔具有相同的分數,結果會得到正確排序。

public override Sort GetSort() 
    { 
     List<SortField> sortFields = new List<SortField>();  
     sortFields.Add(new SortField(StartDateTime.ToString(), SortField.STRING, ReverseSort)); 
     sortFields.Add(new SortField(TitleSort.ToString(), SortField.STRING, ReverseSort)); 
     return new Sort(sortFields.ToArray()); 
    } 
+0

你能發表一些代碼嗎? – bajafresh4life 2010-02-25 14:19:57

+0

我用一個例子更新了這篇文章。謝謝。 – 2010-02-25 14:32:38

+0

嘗試選擇您的代碼並使用編輯框上方的代碼按鈕更好地設置代碼格式。或者,您可以在每行代碼前放四個空格。 – 2010-02-27 00:59:21

回答

0

編輯:用於設置排序字段

代碼,你不喜歡原來的成績,我相信你需要使用一個ConstantScoreQuery首先得到命中,然後將它們傳遞給分揀機。

試試看this question

+0

我將sortobject傳遞給重載搜索方法,索引沒有問題。在正常情況下排序完美。只有在排序分數不同的文檔的情況下,才能正確使用SortField。它試圖對結果進行排序,高排序得分的結果被錯誤放置。 – 2010-02-25 15:50:09