在solr中使用文档创建者确定的权限
我有一个应用程序,文档创建者可以在其中确定要授予的访问权限。权限的格式如下:在solr中使用文档创建者确定的权限,solr,solrj,solr4,Solr,Solrj,Solr4,我有一个应用程序,文档创建者可以在其中确定要授予的访问权限。权限的格式如下: 每个人=>1 我的朋友=>2 仅限ME_=>3 例如: 用户1创建doc1并为每个人设置权限 用户2创建了doc2并仅将权限设置为ME_ 用户3创建doc3并为我的朋友设置权限 在索引中,我们有creator_id,表示创建文档的用户列表。e、 g.对于doc1: 创建者_id=[1] 我的朋友列表(针对每个文档创建者)由不同的模块确定,可在运行时访问 一个文档可以由多个用户创建,每个用户独立授予权限。e、 g: 用户
a) For doc1 permissions_1=1
b) For doc4 permissions_4=1 & permissions_5=3
Then a created a runtime method that checks each document permission (s) and decides if user trying to access is allowed.
a) For doc2 permission_1=[4], permission_2=[] & permission_3=[5]
b) For doc5 permission_1=[], permission_2=[6] & permission_3=[7]
Then use solr fq query to filter out documents based on permissions. However, I am not an expert in solr, so I still trying to find out how to create such a query.
提前感谢。首先,您应该将权限集建模为ACL,以便它包含正确的ACE(如“允许用户成为朋友”和“仅允许用户使用我”)。如果权限经常更改并且您不想重新编制索引,则可以选择将此信息与文档一起编制索引,或者实现外部(自定义)缓存。 您可以实现一个自定义筛选器,该筛选器接收用户(名称、id等),并根据上面提到的规则评估其权限。如果用户数量和文档数量很大,我建议将其实现为PostFilter。有关更多信息,请参阅本文: