2010-02-24 4 views
3

Même après le passage d'un champ de tri, le score du document affecte l'ordre de tri des résultats de la recherche. Existe-t-il un moyen de faire en sorte que Lucene ignore le score du document lorsqu'un champ de tri spécifique est passé?Score du document affectant l'ordre de tri des résultats, Lucene

Ex:

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

Je veux que les résultats soient triés par SortFieldA d'abord, puis par SortFieldB. Donc dans le cas ci-dessus les résultats devraient être et retournés comme doc2, doc3 et doc1. Mais à cause du Score, l'ordre de tri est perturbé. J'ai remarqué que les résultats sont triés correctement si les documents ont le même score.

code qui définit les champs de tri:

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

pouvez-vous poster du code? – bajafresh4life

+0

J'ai mis à jour le poste avec un exemple. Merci. –

+0

Essayez de sélectionner votre code et d'utiliser le bouton de code au-dessus de la boîte d'édition pour mieux formater le code. Alternativement, vous pouvez simplement placer quatre espaces devant chaque ligne de code. –

Répondre

0

Edit: comme vous ne se soucient pas de la partition originale, je crois que vous devez utiliser un ConstantScoreQuery pour obtenir les coups d'abord, puis les passer à le trieur.

Essayez de regarder this question.

+0

Je passe le sortobject à la méthode de recherche surchargée et aucun problème avec l'index. Le tri fonctionne parfaitement dans les cas normaux. Seulement dans le cas de documents où le score de tri est différent, le SortField est utilisé correctement. Il essaie de trier les résultats et les résultats avec un score de tri élevé sont mal placés. –

Questions connexes