検索クエリを休止状態?
-
21-09-2019 - |
質問
あいさつ
次のように私のドメインモデルがある。
class Species {
private String name;
..
..
List<Family> families;
}
class Family{
private String name;
private String locusId;
..
List<Member> members;
}
class Members{
private String name;
private String repTranscript;
}
私は
のようなクエリを実行するために「休止検索」を使用したいですorg.hibernate.lucene.search.Query luceneQuery = parser.parse( "name:ASpeciesName or name:AGroupName or locudID:someLocusID" );
org.hibernate.Query fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery );
List result = fullTextQuery.list();
すべての3つのクラスが同じフィールド「名前」を持っているので、私は、疑問に思って、それは?againsすべてのクラスを検索しない
「結果」のすべてのタイプのオブジェクトを持っていますか?
解決
また、どのようにインデックスに依存します。もしあなた個別インデックス、各クラスを(各クラスが@Indexed注釈を持っているという意味)とFullTextQueryを作成するときに予想されるクラス型を指定していないが、あなたは結果に実際に混合のクラスを取得します。
しかし、あなたの例では、属性の家族とのメンバーの上@IndexedEmbedded使用を検討してください。この場合、Luceneののドキュメントの意志のフィールド名のfamilies.name と families.members.name の
Hibernateの検索オンラインドキュメントおよび組み込みインデックス機能を見てください。
- ハーディ
他のヒント
論理的には、はい、どこクエリで、あなたがしたいことを、オブジェクトの種類を指定しているので。
あなたが特定のタイプに結果を制限したい場合は、可変引数リストとしてこれらの型を渡す必要があります:
fullTextSession.createFullTextQuery( luceneQuery, A.class, B.class );
これはに記載されていますドキュメントはします。
所属していません StackOverflow