13.6.5. Personnalisation de la formule de notation de Lucene


La personnalisation de la formule de notation de Lucene permet à l'utilisateur de personnaliser sa formule de notation en prolongeant org.apache.lucene.search.Similarity. Les méthodes d'abstraction définies dans cette classe correspondent aux facteurs de la formule suivante en calculant la note de la requête q d'un document d :
score(q,d) = coord(q,d) · queryNorm(q) · ∑ t in q ( tf(t in d) · idf(t) 2 · t.getBoost() · norm(t,d) )
Facteur Description
tf(t ind) Facteur de fréquence de terme pour le terme (t) du document (d).
idf(t) Inverse la fréquence du document du terme.
coord(q,d) Facteur de score basé sur le nombre de termes de requêtes trouvés dans un document spécifique.
queryNorm(q) Facteur de normalisation utilisé pour noter des requêtes comparables.
t.getBoost() Boost de champ.
norm(t,d) Contient quelques boosts (de temps d'indexation) et facteurs de longueur.
Ce manuel n'explique pas cette formule en détails. Veuillez consulter les Javadocs de Similarity pour plus d'informations.
Hibernate Search permet de modifier la calculation de similarité de Lucene de trois manières différentes.
Vous pouvez tout d'abord définir la similarité par défaut en spécifiant le nom entier de la classe de l,implémentation de votre Similarity en utilisant la propriété hibernate.search.similarity. La valeur par défaut est org.apache.lucene.search.DefaultSimilarity.
Vous pouvez également remplacer la similarité utilisée pour un index spécifique en définissant la propriété similarity. Copy to Clipboard Toggle word wrap
hibernate.search.default.similarity = my.custom.Similarity
Pour finir, vous pouvez remplacer la similarité par défaut au niveau de la classe à l'aide de l'annotation @Similarity.
Copy to Clipboard Toggle word wrap
@Entity
@Indexed
@Similarity(impl = DummySimilarity.class)
public class Book {
...
}
Partons par exemple du principe que le nombre de fois où un terme apparaît dans un document n'est pas important. Les documents où un terme n'apparaît qu'une fois doivent recevoir la même notation que les documents où un terme apparaît plusieurs fois. Dans ce cas-là, le résultat de votre implémentation personnalisée de la méthode tf(float freq) devrait être 1.0.

Avertissement

Lorsque deux entités partagent le même index, elles doivent déclarer la même mise en œuvre de Similarity. Les classes dans la même hiérarchie de classe partagent toujours le même index, il n'est donc pas autorisé de remplacer l'implémentation de Similarity dans un sous-type.
Il serait par ailleurs insensé de définir cette similarité par la configuration d'index et la configuration de niveau de classe car cela créearit un conflit. Une telle configuration sera rejetée.
Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat, Inc.