假设我有2个注释用于全文搜索的实体:
@Entity
public class User implements Serializable {
@Id
public Long id;
...
}
@Entity
@Indexed
public class Post {
@Id
public Long id;
@Field(name = "content")
public String content;
@ManyToOne
public User user;
...
}
对write full text search on just content field来说非常简单。但是如何通过text关键字和用户ID过滤结果?例如,搜索" hello"在content field和user.id上等于10?
答案 0 :(得分:2)
您要查找的关键字是注释IndexedEmbedded。
@ManyToOne
@org.hibernate.search.annotations.IndexedEmbedded(includePaths={ "userId" })
public User user;
如果您现在创建LuceneIndex,LuceneDocument中将有一个名为User.userId的新Field。 您现在可以搜索UserId(作为String)和组合内容。 请查看Luke以检查您的索引文件。