Question

J'ai eu ce long terme ont pas tout à fait de comprendre comment mettre en œuvre un décent de Lucene, de tri ou de classement.Dire que j'ai une liste des villes et de leurs populations.Si quelqu'un recherche de "nouvelles" ou "londres" je veux la liste de préfixe correspond commandé par la population, et je n'ai que le travail avec un préfixe de recherche et de tri par champ inversé, où il y a une population de champ, c'est à dire le Nouveau-Mexique, New York;ou à Londres, à Londonderry.

Cependant, j'ai toujours envie de la correspondance exacte des nom pour être au top.Ainsi, dans le cas de "Londres" la liste doit indiquer "de Londres, Londres, Londonderry", où le premier Londres au royaume-UNI et la deuxième, à Londres, est dans le Connecticut, même si Londonderry a une plus grande population de Londres CT.

Quelqu'un aurait-il une requête unique solution?

Était-ce utile?

La solution

dlamblin,permettez-moi de voir si je reçois correctement ceci:Vous voulez faire un préfixe de base de la requête, puis trier les résultats en fonction de la population, et peut-être de combiner l'ordre de tri avec une préférence pour les correspondances exactes.Je vous suggère de séparer la recherche, de tri et d'utiliser un CustomSorter pour le tri:Voici une entrée de blog décrivant une coutume trieur. Le classique Lucene livre explique cette bien.

Autres conseils

API pour

Sortcomparator

dit

Il y a une nette Comparables pour chaque terme unique dans le domaine - si certains documents ont la même expression dans les le domaine, le cache de tableau aura les entrées qui font référence à la même Comparable

Vous pouvez appliquer un

FieldSortedHitQueue

à la sortcomparator qui a un Comparateur de domaine pour lequel l'api dit ...

Magasins un comparateur correspondant à chaque champ à trier par.

Ainsi, le terme peut être classée en conséquence

Ma solution actuelle est de créer une exacte chercheur et un préfixe de chercheur, à la fois triées par inversion de population, puis copiez tous mes coups de départ précision de frappe, se déplaçant vers le préfixe de frappe.Il fait de la pagination mes résultats un peu plus ennuyeux que je pense qu'il devrait être.

Aussi, j'ai utilisé une table de hachage pour éliminer les doublons, mais plus tard changé le préfixe chercheur dans une requête booléenne d'un préfixe de recherche (DOIT) avec une recherche exacte (ne DOIT PAS), d'avoir Lucene supprimer les doublons.Bien que cela semblait encore plus de gaspillage.

Modifier:Déplacé à un commentaire (depuis la fonctionnalité existe maintenant): Yuval F Merci pour votre blog ...Comment le tri comparateur de savoir que le nom de domaine "londres" correspond exactement au terme de la recherche pour "london" si il ne peut pas accéder le terme de recherche?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top