Red Hat Training

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

13.2.3. Analyse

Le procédé Analysis, qui consiste à convertir un texte en termes uniques (mots), est considéré comme l'une des fonctionnalités les plus importantes d'un moteur de recherche en texte intégral. Lucene utilise le concept des Analyzers pour contrôler ce procédé. La section suivante décrit les différentes façons offertes par Hibernate Search pour configurer ces analyseurs.

13.2.3.1. Analyseur par défaut et analyseur par classe

La classe de l'analyseur par défaut utilisé pour indexer les champs segmentés peut être configurée à l'aide de la propriété hibernate.search.analyzer. La valeur par défaut pour cette propriété est org.apache.lucene.analysis.standard.StandardAnalyzer.
Vous pouvez également définir la classe d'analyseur par entité, propriété et @Field (utile lorsque plusieurs champs sont indexés à partir d'une propriété unique).

Exemple 13.19. Les différentes façons d'utiliser @Analyzer

@Entity
@Indexed
@Analyzer(impl = EntityAnalyzer.class)
public class MyEntity {
    @Id
    @GeneratedValue
    @DocumentId
    private Integer id;

    @Field
    private String name;

    @Field
    @Analyzer(impl = PropertyAnalyzer.class)
    private String summary;

    @Field( analyzer = @Analyzer(impl = FieldAnalyzer.class )
    private String body;

    ...
}
Dans cet exemple, EntityAnalyzer est utilisé pour indexer la propriété segmentée (name), sauf summary et body qui sont indexés respectivement avec PropertyAnalyzer et FieldAnalyzer.

Avertissement

Il est généralement déconseillé de mélanger différents analyseurs dans la même entité car cela complique la génération de requête et rend les résultats moins prévisibles (pour les débutants), plus particulièrement si vous utilisez un QueryParser (qui utilise le même analyseur pour la requête entière). En général, pour tout champ donné, le même analyseur doit être utilisé pour l'indexation et la génération de requêtes.