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