2011-01-18 6 views
6

Est-ce que Lucene fournit un moyen de booster de nouveaux documents? Par exemple, supposons que le document Lucene comprenne un champ de date.Booster de nouveaux documents avec Lucene

Est-il possible, sans que l'utilisateur ait à modifier sa requête, de présenter les documents les plus récents avec un score plus élevé? Je ne veux pas recourir à une solution grossière de "tri par date" car elle annulera complètement l'algorithme de notation.

Répondre

3

Utilisez Document.setBoost (valeur flottante) pour placer des documents dans l'index.

Vous pouvez soit réajuster constamment la valeur sur des documents existants, soit avoir une valeur flottante qui s'incrémente avec la date, de sorte que vous n'avez qu'à l'appliquer au moment où les documents sont insérés. Par exemple, commencez par une valeur de boost de 0 pour les documents du jour 1. Par exemple, commencez par une valeur de boost de 0 pour les documents du jour 1. Chaque jour, augmentez le boost de 1. Il s'agit d'une valeur flottante, en incrémentant de 365 chaque année durera longtemps.

Vous devrez peut-être expérimenter avec la force de l'accentuation pour obtenir l'effet que vous voulez.

+0

Merci pour votre réponse. C'est très intelligent en théorie mais je vais devoir le tester minutieusement pour voir si ça fonctionne vraiment. Quoi qu'il en soit, très intelligent en effet qui soulève la question de savoir pourquoi il n'est pas documenté. On s'attendrait à le trouver dans un livre de cuisine ou quelque chose .. – yannisf

6

Vous pouvez voir Lucene en action. Dans la deuxième édition, pg. 187 ils donnent un moyen de le faire. Fondamentalement, vous voudrez écrire votre propre requête qui s'étend CustomScoreQuery, et ajoute un coup de pouce.

+0

Belle réponse aussi! Merci pour l'indice! – yannisf

Questions connexes