11.2.3. API のクエリー
以下を使用して Red Hat Data Grid にクエリーできます。
- Lucene または Hibernate Search クエリー。Red Hat Data Grid は Hibernate Search DSL を公開し、Lucene クエリーを生成します。1 つのノードで Lucene クエリーを実行したり、Red Hat Data Grid クラスターの複数のノードにクエリーをブロードキャストしたりできます。
- Ickle クエリー。全文の拡張機能を含むカスタムの文字列ベースのクエリー言語です。
11.2.3.1. Hibernate Search リンクのコピーリンクがクリップボードにコピーされました!
インデックス化を設定するために Hibernate Search アノテーションをサポートする以外に、他の Hibernate Search API を使用してキャッシュをクエリーすることもできます。
11.2.3.1.1. Lucene クエリーの実行 リンクのコピーリンクがクリップボードにコピーされました!
Lucene クエリーを直接実行するには、CacheQuery で作成してラップします。
11.2.3.1.2. Hibernate Search DSL の使用 リンクのコピーリンクがクリップボードにコピーされました!
Hibernate Search DSL を使用して Lucene クエリーを作成できます。以下に例を示します。
この DSL のクエリー機能の詳細は、Hibernate Search マニュアル の関連セクションを参照してください。
11.2.3.1.3. Ffted Search リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Data Grid は、Hibernate Search FacetManager を使用して Faceted Search をサポートします。
上記のお気に入り検索は、年ごとにリリースされた「ビットカン」に一致する数字の書籍を返します。以下に例を示します。
Faceted Search の詳細は、「 Hibernate Search Faceting」を参照してください。
11.2.3.1.4. 空間クエリー リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Data Grid は Spatial Queries にも対応しているため、距離、ジオメン、地理座標に基づいて全テキストと制限を組み合わせることができます。
たとえば、検索されるエンティティーで @Spatial アノテーションを使用し、@Latitude および @Longitude とともに使用します。
空間クエリーを実行するには、Hibernate Search DSL を使用できます。
11.2.3.1.5. IndexedQueryMode リンクのコピーリンクがクリップボードにコピーされました!
インデックス化されたクエリーのクエリーモードを指定できます。IndexedQueryMode.BROADCAST を使用すると、クラスターの各ノードにクエリーをブロードキャストし、結果を取得し、呼び出し元に戻る前にそれらを組み合わせることができます。各ノードのローカル インデックスにはインデックス化されたデータのサブセットのみがあるため、共有されていない インデックスと併用することが適切です。
IndexedQueryMode.FETCH は呼び出し元でクエリーを実行します。クラスター全体のデータのインデックスすべてがローカルで使用できる場合、パフォーマンスは最適になります。そうでないと、このクエリーモードにはリモートノードからインデックスデータを取得することが必要になる場合があります。
IndexedQueryMode は、現時点で Lucene Queries および Ickle String クエリー(Red Hat Data Grid Query DSL なし)に対してサポートされます。
例:
CacheQuery<Person> broadcastQuery = Search.getSearchManager(cache).getQuery(new MatchAllDocsQuery(), IndexedQueryMode.BROADCAST); List<Person> result = broadcastQuery.list();
CacheQuery<Person> broadcastQuery = Search.getSearchManager(cache).getQuery(new MatchAllDocsQuery(), IndexedQueryMode.BROADCAST);
List<Person> result = broadcastQuery.list();