使用hibernate通过userId字段过滤全文搜索结果

时间:2015-03-14 03:34:16

标签: java hibernate full-text-search hibernate-search jpa-2.1

假设我有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?

1 个答案:

答案 0 :(得分:2)

您要查找的关键字是注释IndexedEmbedded。

@ManyToOne
@org.hibernate.search.annotations.IndexedEmbedded(includePaths={ "userId" })    
public User user;

如果您现在创建LuceneIndex,LuceneDocument中将有一个名为User.userId的新Field。 您现在可以搜索UserId(作为String)和组合内容。 请查看Luke以检查您的索引文件。