2010-11-09 19 views
0

Tout le reste restant le même, certains de mes objets ont plus de valeur que d'autres.Amélioration de document dans Hibernate Search/Lucene

Est-il possible d'augmenter les objets au moment de l'index, disons en fonction du prix en USD?

Ou si vous avez un nombre limité de valeurs, j'espérais que cela fonctionnerait:

f:aaa^4 f:bbb^3 f:ccc^2 animal:elephant 

mais je dois manquer quelque chose.

Répondre

1

Ce que vous dites fonctionnera. Cependant, vous voudrez probablement le reformater en (boost query) +(original query), par ex. (f:a^4 f:b^3 b:c^2) +animal:elephant. La façon dont vous l'avez maintenant va trouver des choses qui ont seulement f:aaa, indépendamment de animal:elephant.

Vous pouvez voir Lucene in Action pour un exemple de la façon d'écrire un buteur personnalisé qui vous permet de faire quelque chose de plus comme stimuler selon le prix. Je ne suis pas au courant de la façon dont vous pouvez le faire sans écrire du code.

0

Si vous utilisez hibernate-search, vous pouvez ajouter un renforcement directement aux champs à l'aide d'annotations. Il existe deux types de boost: boost dynamique qui s'applique à l'ensemble de l'objet, ou boost au niveau champ. Vous voulez sans doute stimuler dynamique, et peut être spécifié à l'aide: @DynamicBoost (impl = VIPBoostStrategy.class)

Voir http://docs.jboss.org/hibernate/search/3.2/reference/en-US/html/search-mapping.html#section-boost-annotation