0

次のような lucene クエリを書きたい

" from activity where metaentityByEntity.id in(select metaentityByEntity.id from userentity where user.id=1)"

私のドメインクラスは次のとおりです。

public class Activity implements java.io.Serializable {

    private Long id;
    private Date timeStamp;
    private User user;
    @IndexedEmbedded
    private Metaentity metaentityByEntity;
}

public class Userentitydetail implements java.io.Serializable {

    private Long id;
    private Date timeStamp;
    private Metaentity metaentityByEntity;
    @IndexedEmbedded
    private User user;
    private Metaentity metaentityByProjectId;
    private byte unfollow;
    private Byte isAssociated;
} 

しかし、複数のインデックスから検索する lucene クエリを作成するにはどうすればよいでしょうか? 基本的に私は休止状態の検索を行っています。

ありがとう。

4

1 に答える 1

2

Luceneはリレーショナルデータベースではないので、簡単に言えば、結合を試してはいけないということです。クエリを大幅に簡素化できるため、特定のユースケースを実装できます。

リンクをたどっているフィールドでクエリを作成するだけです。

QueryBuilder queryBuilder = fullTextSession.getSearchFactory()
    .buildQueryBuilder()
    .forEntity( Activity.class )
    .get();

Query query = queryBuilder.keyword()
    .onField( "metaentityByEntity.user.id" )
    .ignoreAnalyzer()
    .matching( 1 )
    .createQuery();

一部のマッピングの詳細を省略したため、一部の詳細を調整する必要があります。たとえば、

.matching( "1" )

代わりは。

于 2012-10-10T22:57:35.520 に答える