Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

13.2.2. Boosting

Lucene comporte une notion de boosting qui vous permet de donner à certains documents ou champs plus ou moins d'importance que d'autres. Lucene fait la différence entre le boosting de temps d'indexation et de recherche. Les sections suivantes vous montrent comment réaliser un boosting de temps d'indexation à l'aide de Hibernate Search.

13.2.2.1. Boosting de temps d'indexation statique

Pour définir une valeur de boosting statique pour une classe ou propriété indexée, vous pouvez utiliser l'annotation @Boost. Vous pouvez utiliser cette annotation dans @Field ou l'indiquer directement au niveau méthode ou classe.

Exemple 13.17. Les différentes façons d'utiliser @Boost

@Entity
@Indexed
@Boost(1.7f)
public class Essay {
    ...

    @Id
    @DocumentId
    public Long getId() { return id; }

    @Field(name="Abstract", store=Store.YES, boost=@Boost(2f))
    @Boost(1.5f)
    public String getSummary() { return summary; }

    @Lob
    @Field(boost=@Boost(1.2f))
    public String getText() { return text; }

    @Field
    public String getISBN() { return isbn; }

}
Dans l'Exemple 13.17, « Les différentes façons d'utiliser @Boost », les probabilités d'Essay's d'atteindre le haut de la liste de recherche seront multipliées par 1.7. Le champ summary sera 3 fois (2 x 1.5, car @Field.boost et @Boost sont cumulatifs sur une propriété) plus important que le champ isbn. Le champ text sera 1,2 fois plus important que le champ isbn. Veuillez noter que cette explication est fausse en théorie, mais elle est simple et proche de la réalité en pratique.