限制用户访问的 Lucene 索引
Lucene indexing with restricted user access
我们正在尝试分别使用 lucene 和 solr 将全文搜索功能添加到我们的自定义知识库中。我们目前使用基于角色的模型限制用户可以看到的内容。因此,每篇文章都有一系列角色,如果用户也是其中一个角色的成员,他/她就可以查看该文章。
所以搜索当然应该只有 return 用户有权访问的结果。
我有点不知道从哪里开始或如何做。我需要稍后过滤结果吗?我是否创建基于角色的索引?
如果有人能指出正确的方向,我将不胜感激。
谢谢。斯蒂芬妮。
我建议将访问角色存储为元数据。让定义 access_roles
是能够多值的字符串字段。
access_roles:[user, admin] // Users and the Admin roles can access this search.
access_roles:[user, admin, anonymous] // Users and the Admin and Anonymous roles can access this search.
当您想要更改权限时,您应该编辑访问角色。
当具有用户角色的用户搜索时,solr 将仅检索与用户的访问角色匹配的结果。
当拥有 (user
) 个角色和 (admin
) 个角色的用户搜索时,他的搜索结果如下:
q=mainquery
&fq=access_roles:user
&fq=access_roles:admin
&facet=on
&facet.field=access_roles
获取包含 user
角色 或 admin
角色在 access_roles
中的所有结果;
当用户,(user
)角色,特殊团队成员(it_department
)角色搜索时,
q=mainquery
&fq=access_roles:user
&fq=access_roles:it_department
&facet=on
&facet.field=access_roles
它还获取 'it_department' 文档
为了更好理解,我画了授权图
查询改编自 http://wiki.apache.org/solr/SimpleFacetParameters#Multi-Select_Faceting_and_LocalParams
我们正在尝试分别使用 lucene 和 solr 将全文搜索功能添加到我们的自定义知识库中。我们目前使用基于角色的模型限制用户可以看到的内容。因此,每篇文章都有一系列角色,如果用户也是其中一个角色的成员,他/她就可以查看该文章。
所以搜索当然应该只有 return 用户有权访问的结果。
我有点不知道从哪里开始或如何做。我需要稍后过滤结果吗?我是否创建基于角色的索引?
如果有人能指出正确的方向,我将不胜感激。
谢谢。斯蒂芬妮。
我建议将访问角色存储为元数据。让定义 access_roles
是能够多值的字符串字段。
access_roles:[user, admin] // Users and the Admin roles can access this search.
access_roles:[user, admin, anonymous] // Users and the Admin and Anonymous roles can access this search.
当您想要更改权限时,您应该编辑访问角色。
当具有用户角色的用户搜索时,solr 将仅检索与用户的访问角色匹配的结果。
当拥有 (user
) 个角色和 (admin
) 个角色的用户搜索时,他的搜索结果如下:
q=mainquery
&fq=access_roles:user
&fq=access_roles:admin
&facet=on
&facet.field=access_roles
获取包含 user
角色 或 admin
角色在 access_roles
中的所有结果;
当用户,(user
)角色,特殊团队成员(it_department
)角色搜索时,
q=mainquery
&fq=access_roles:user
&fq=access_roles:it_department
&facet=on
&facet.field=access_roles
它还获取 'it_department' 文档
为了更好理解,我画了授权图
查询改编自 http://wiki.apache.org/solr/SimpleFacetParameters#Multi-Select_Faceting_and_LocalParams