Lucene使用受限用户访问进行索引

时间:2016-11-01 18:14:52

标签: solr lucene full-text-search search-engine searchview

我们正尝试使用lucene solr为我们的自定义知识库添加全文搜索功能。我们目前限制用户可以使用基于角色的模型看到的内容。因此,每篇文章都附有一系列角色,如果用户也是其中一个角色的成员,他/她可以查看该文章。

当然,搜索应该只返回用户有权访问的结果。

我有点卡在哪里开始或如何做到这一点。我以后需要过滤结果吗?我是否创建了基于角色的索引?

如果有人能指出我正确的方向,我们将非常感激。

感谢。斯蒂芬妮。

1 个答案:

答案 0 :(得分:1)

我建议将访问角色存储为元数据。让定义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角色 OR access_roles角色的所有结果;

当用户,(user)角色,特殊团队成员(it_department)角色搜索时,

q=mainquery
&fq=access_roles:user
&fq=access_roles:it_department
&facet=on
&facet.field=access_roles

也提取'it_department'文件

我已经绘制了授权方案以便更好地理解

enter image description here

改编自http://wiki.apache.org/solr/SimpleFacetParameters#Multi-Select_Faceting_and_LocalParams

的查询