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