Red Hat Training

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

14.2.3. 分析

Analysis、テキストを 単一の用語 (単語) に変換するプロセスであり、フルテキスト検索エンジンの主な機能として見なされます。Lucene は、Analyzer の概念を使用してこのプロセスを制御します。以下のセクションでは、Hibernate Search がアナライザーを設定するために提供する複数の方法について説明します。

14.2.3.1. デフォルトの Analyzer とクラスによる Analyzer

トークン化されたフィールドのインデックス化に使用されるデフォルトのアナライザークラスは、hibernate.search.analyzer プロパティーで設定できます。このプロパティーのデフォルト値は org.apache.lucene.analysis.standard.StandardAnalyzer です。
また、エンティティーやプロパティー、さらには @Field ごとにアナライザークラスを定義することもできます (複数のフィールドが単一のプロパティーからインデックス化される場合に便利です)。

例14.19 @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;

    ...
}
この例では、EntityAnalyzer を使用して、PropertyAnalyzerFieldAnalyzer でインデックス化される summarybody を除き トークン化されたプロパティー (name) をインデックス化します。
警告
同じエンティティーで異なるアナライザーを組み合わせることは多くの場合で適切ではありません。特にクエリー全体に同じパーサーを使用する QueryParser を使用している場合、クエリーの構築がより複雑になり、結果の予測が難しくなります。経験上、特定のフィールドでは、同じアナライザーを使用してインデックス付けとクエリーを実行する必要があります。