2009-11-09 4 views
3

Bonjour,Comment appliquer le tri par défaut dans Lucene sur des scores égaux?

Si je par exemple les documents qui ont les champs suivants

Person_name - Birthday 
Jordan - 2009-06-15 
Marc - 2009-01-01 
Marcos - 2009-01-01 
Marcissh_something_something - 2009-06-15 
Marcos - 2009-12-31 

Et sur la recherche de PERSON_NAME: Marc * I a obtenu les scores suivants (scores ici sont hypothétiques)

Person_name - Birthday - Score 
Jordan - 2009-06-15 - 0.0 
Marc - 2009-01-01 - 1.0 
Marcos - 2009-01-01 - 0.8 
Marcissh_something_something - 2009-06-15 - 0.1 
Marcos - 2009-12-31 - 0.8 

Comment puis-je récupérer le résultat de telle sorte que le résultat soit d'abord trié par pertinence, puis en supposant que la même pertinence (score) soit triée par date décroissante .... de sorte que le résultat soit

Person_name - Birthday - Score 
Marc - 2009-01-01 - 1.0 
Marcos - 2009-12-31 - 0.8 
Marcos - 2009-01-01 - 0.8 
Marcissh_something_something - 2009-06-15 - 0.1 

Merci

Répondre

1

J'allais recommander un ScoreDocComparator, mais je vois qu'il est obsolète maintenant. Vous pouvez utiliser un FieldComparator. Vous devez créer un TopFieldCollector et définir ses Sort selon vos souhaits. Je crois que c'est plutôt nouveau, car je n'ai pas pu trouver un bon exemple.

+0

Puisque j'utilise la version 2.4.1 de Lucene, je vais probablement utiliser ScoreDocComparator ... mais comment l'utiliser exactement? :-) –

+0

Dans ce cas, s'il vous plaît voir ma réponse à: http://stackoverflow.com/questions/8517/lucene-exact-ordering –

1

Essayez d'examiner les résultats de la recherche, puis trier ceux avec un score égal vous-même. Vous pouvez utiliser un comparateur pour comparer le score, puis les champs naturels des résultats de recherche.

Questions connexes