質問

あいさつ

次のように私のドメインモデルがある。

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 );

これはに記載されていますドキュメントはします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top