Le tri des résultats de recherche dans Lucene basé sur un champ numérique
J'ai quelques docs avec deux de champ : texte, le comte.
Je utiliser lucene pour indexer les docs et je veux maintenant à la recherche dans le texte et obtenez le résultat trié par le comte dans l'ordre décroissant. comment puis-je le faire?
OriginalL'auteur Taher Khorshidi | 2014-02-23
Vous devez vous connecter pour publier un commentaire.
De recherche par défaut de mise en œuvre de Apache Lucene renvoie des résultats triés par score (le résultat le plus pertinent en premier), puis par id (le résultat le plus ancien en premier).
Ce comportement peut être personnalisé au moment de la requête avec un additionnel de Tri paramètre .
TopFieldDocs Chercheur#recherche(Requête requête, Filtre, int n, Tri tri)
Le genre de paramètre spécifie les champs ou les propriétés utilisées pour le tri. L'implémentation par défaut est définie de cette manière :
Pour modifier le tri, vous n'avez qu'à remplacer les champs avec ceux que vous voulez :
Cela semble simple, mais ne fonctionnera pas jusqu'à ce que les conditions suivantes sont remplies :
type) pour faire Lucene trouver votre terrain, même si c'est normalement
facultatif.
Les champs de tri doit être indexée, mais pas sous forme de jeton :
document.add (new Field ("byNumber", Integer.toString(x), Field.Store.NO, Field.Index.NOT_ANALYZED));
Les champs de tri de contenu doit être en texte brut uniquement. Si un seul
élément a un caractère spécial ou accentué, dans l'un des champs utilisés
pour le tri, l'ensemble de la recherche sera de retour non triés résultats.
Cochez cette tutoriel.
Vous êtes les bienvenus, et désolé je n'ai pas votre question, qu'entendez-vous exactement par :
sort order
J'utilise cette méthode et le résultat est trié, mais dans l'ordre Croissant et je ne peux pas changer cela.
Le type de champ est dans une sous-classe
SortField.Type
, donc pour la Chaîne, c'estSortField.Type.STRING
OriginalL'auteur Salah
En dessous de la ligne fera l'affaire. Le dernier paramètre est
boolean reverse
si vous définissez ce paramètre à true, les trier dans l'ordre inverse, c'est à dire en descendant dans votre cas.Exemple de code:
Aussi il est nécessaire que vous ajoutez de tri permis de champ comme un
NumericDocValuesField
lorsque vous créez votre index.Code par lucene-core-5.0.0
OriginalL'auteur Madhav
première:
deuxième:
troisième:
Comme c'est OK !
OriginalL'auteur Projack