我想写一个像
这样的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查询?基本上我在做hibernate搜索。
感谢。
答案 0 :(得分:1)
Lucene不是关系数据库,所以简短的回答是你不应该尝试连接;您的特定用例恰好可以实现,因为您的查询可以大大简化。
只需在链接后面的字段上创建一个查询:
QueryBuilder queryBuilder = fullTextSession.getSearchFactory()
.buildQueryBuilder()
.forEntity( Activity.class )
.get();
Query query = queryBuilder.keyword()
.onField( "metaentityByEntity.user.id" )
.ignoreAnalyzer()
.matching( 1 )
.createQuery();
在省略一些映射细节时,您必须调整一些细节;例如,它可能需要
.matching( "1" )
代替。