13.3.5. Optimisation des procédés de requête


La performance d'une requête dépend de plusieurs critères :
  • La requête Lucene.
  • Le nombre d'objets chargés : toujours utiliser la pagination ou la projection d'index (le cas échéant).
  • La façon dont Hibernate Search intéragit avec les lecteurs Lucene : définit la stratégie de lecteur appropriée.
  • Mise en cache des valeurs extraites fréquemment à partir de l'index : cf. Section 13.3.5.1, « Mise en cache des valeurs d'index : cache du champ »

13.3.5.1. Mise en cache des valeurs d'index : cache du champ

La fonction première d'un index Lucene est d'identifier les résultats de votre recherche. Après votre requête, les résultats sont analysés pour extraire les informations importantes. Hibernate Search doit généralement extraire le type de Classe et la clé principale.
L'extraction des valeurs depuis l'index ralentit la performance de manière plus ou moins importante. Dans certains cas, une mise en cache peut s'avérer utile.
Les besoins dépendent du type de projection utilisé (cf. Section 13.3.1.10.5, « Projection »), puisque dans certains cas, le type de Classe n'est pas nécessaire car il peut être déduit à partir du contexte de la requête ou par d'autres moyens.
L'annotation @CacheFromIndex vous permet de tester différents types de mise en cache des champs de métadonnées principales requis par Hibernate Search :
import static org.hibernate.search.annotations.FieldCacheType.CLASS;
import static org.hibernate.search.annotations.FieldCacheType.ID;

@Indexed
@CacheFromIndex( { CLASS, ID } )
public class Essay {
    ...
Il est possible de mettre en cache les ID et types de Classe à l'aide de l'annotation suivante :
  • CLASS : Hibernate Search utilise un cache de champ Lucene pour améliorer la performance de l'extraction du type de Classe à partir de l'index.
    Cette valeur est activée par défaut et sera appliquée par Hibernate Search si vous ne précisez pas l'annotation @CacheFromIndex.
  • ID : l'extraction de l'identifiant principal utilisera une mise en cache, ce qui permet l'obtention de meilleurs résultats, mais signifie également que davantage de mémoire sera utilisée et que la performance en sera affectée.

Note

Mesurer l'impact sur la performance et l'utilisation de la mémoire après avoir exécuté quelques requêtes. La performance peut parfois être améliorée en autorisant Field Caches.
L'utilisation d'un cache de champ entraîne deux inconvénients :
  • L'utilisation de la mémoire : ces caches sont de grands consommateurs de mémoire. Le cache CLASS a généralement des besoins moins importants que le cache ID.
  • Premières utilisations de l'Index : à l'utilisation des Field Caches, la première requête sur un nouvel index ou segment sera plus lente qu'en l'absence de cache.
Pour certaines requêtes, le type de classe n'est pas nécessaire. Dans ce cas, même si vous activez le cache de champ CLASS, il ne sera pas utilisé ; par exemple, si vous ciblez une classe simple, tous les résultats seront de ce type (l'évaluation sera exécutée à chaque requête).
Pour le cache de champ de l'ID à utiliser, les ID des entités ciblées doivent utiliser un TwoWayFieldBridge et chaque type chargé dans une requête spécifique doit utiliser le nom de champ de l'ID et avoir des ID du même type (ceci est évalué à chaque exécution de requête).
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

© 2026 Red Hat
Retour au début