1.6. アナライザ
次にもう少し面白いことをしてみましょう。インデックス化された書籍タイトルのいずれかが "Refactoring: Improving the Design of Existing Code" であり、"refactor"、"refactors"、"refactored"、および "refactoring" のすべてのクエリでヒットしたいとします。Lucene では、これはインデックス作成中と検索処理中にワードステミングを適用するアナライザクラスを選択して実現できます。Hibernate Search は、使用するアナライザを設定する複数の方法を提供します (「アナライザ」 を参照)。
- 設定ファイルでの
hibernate.search.analyzer
プロパティの設定。指定されたクラスはデフォルトのアナライザです。 - エンティティレベルでの
アノテーションの設定。@Analyzer
- フィールドレベルでの
@
アノテーションの設定。Analyzer
@Analyzer
アノテーションを使用する場合は、使用するアナライザの完全修飾クラス名を指定したり、@AnalyzerDef
アノテーションにより定義されたアナライザ定義を参照したりできます。アナライザ定義を参照する場合は、ファクトリを使用する Solr アナライザフレームワークが使用されます。利用可能なファクトリクラスの詳細については、Solr JavaDoc または Solr Wiki の対応するセクションを参照してください。選択されたファクトリに応じて、Solr 依存関係の上部に追加のライブラリが必要になることがあります。たとえば、PhoneticFilterFactory
は commons-codec に依存します。
以下の例では、
StandardTokenizerFactory
が使用され、その後に LowerCaseFilterFactory
と SnowballPorterFilterFactory
の 2 つのフィルタファクトリが続きます。標準的なトークナイザは単語を句読点とハイフンで分割します (電子メールアドレスとインターネットホスト名はそのまま保持されます)。これは優れた汎用的なトークナイザです。小文字のフィルタは各トークンの文字を小文字にし、スノーボールフィルタは言語固有のステミングを適用します。
一般的に、Solr フレームワークを使用する場合は、最初にトークナイザを使用し、次に任意の数のフィルタを使用する必要があります。
例1.10 @AnalyzerDef
および Solr フレームワークを使用してアナライザを定義および使用