Hibernate Search可以通过用户可访问性来限制结果吗?

Dej*_*ell 1 java hibernate hibernate-search

我正在使用Hibernate。我正在寻找一个自由文本引擎。

在进行调查之前,我需要您的经验。

我的应用程序中有用户,角色和对象表。用户连接到一个或多个角色,而角色连接到一个或多个对象的地方。

在我的自由文本搜索中,用户只能访问对象表允许他观看的数据。

Hibernate搜索可以帮助我吗?

bre*_*777 5

根据您描述的模型外观,Hibernate Search将能够轻松为您提供所需的内容。

听起来您正在寻找嵌入式索引和过滤器的组合。我假设对象和角色之间存在多对多关系。如果是这样,您可能在对象中有以下内容:

@ManyToMany
@JoinTable(name = "object_role",
            joinColumns = @JoinColumn(name = "object_id"),
            inverseJoinColumns = @JoinColumn(name = "role_id"))
private Set<Role> roles = new HashSet<Role>();
Run Code Online (Sandbox Code Playgroud)

要使用这些角色并将其嵌入到为Object创建的索引中,您只需将其放在@IndexedEmbedded(prefix = "somPrefixName")上方@ManyToMany

然后,您可以定义一个过滤器,使用@FullTextFilterDef该过滤器查看此嵌入式索引,并按给定角色(可能是运行搜索的用户角色)进行过滤。这将确保搜索查询仅返回与给定角色相关的对象。

简而言之,Hibernate Search将能够提供您所需的内容(假设我正确理解了您的要求)。如果您愿意,我很乐意提供更多详细信息。