検索

14.2.3.5. アナライザーの取得

download PDF
複数のアナライザーがドメインモデルで使用される場合、スチーミングや概算などの利点を活かすために、アナライザーを取得することができます。この場合、同じアナライザーを使用してクエリーを作成します。または、正しいアナライザーを自動的に選択する Hibernate Search クエリー DSL を使用します。「Lucene クエリーの構築」 を参照すること。
Lucene プログラム API または Lucene クエリーパーサーのいずれを使用している場合も、特定のエンティティーのスコープ分析を取得することができます。スコープ指定のアナライザーは、インデックス化されたフィールドに応じて適切なアナライザーを適用するアナライザーです。複数のアナライザーを特定のエンティティーに定義でき、それぞれが個別のフィールドで作業することに注意してください。スコープ指定のアナライザーは、すべてのアナライザーをコンテキスト認識のアナライザーに統合します。理論はビットが複雑であるように見えますが、クエリーで正しいアナライザーを使用することは非常に簡単です。
注記
子エンティティーにプログラムによるマッピングを使用する場合は、子エンティティーによって定義されるフィールドのみを表示できます。親エンティティーから継承されたフィールドまたはメソッド (@MappedSuperclass でアノテーション付け) は設定できません。親エンティティーから継承したプロパティーを設定するには、子エンティティーのプロパティーを上書きするか、親エンティティーのプログラムによるマッピングを作成します。これは、子エンティティーで定義されていない場合に親エンティティーのフィールドとメソッドにアノテーションを付けることができないアノテーションの使用に影響します。

例14.24 完全テキストクエリーの構築時のスコープ付きテナントの使用

org.apache.lucene.queryParser.QueryParser parser = new QueryParser(
    "title", 
    fullTextSession.getSearchFactory().getAnalyzer( Song.class )
);

org.apache.lucene.search.Query luceneQuery = 
    parser.parse( "title:sky Or title_stemmed:diamond" );

org.hibernate.Query fullTextQuery = 
    fullTextSession.createFullTextQuery( luceneQuery, Song.class );

List result = fullTextQuery.list(); //return a list of managed objects
上記の例では、song タイトルが 2 つのフィールドでインデックス化されています。title フィールドでは標準アナライザーが使用され、title_stemmed フィールドには、スチーミングアナライザーが使用されます。検索ファクトリーによって提供されるアナライザーを使用すると、クエリーはターゲットフィールドに応じて適切なアナライザーを使用します。
注記
@AnalyzerDef を介して定義されたアナライザーを、次を使用して定義名で取得することもできます。searchFactory.getAnalyzer(String)
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.