我们正尝试使用lucene solr为我们的自定义知识库添加全文搜索功能。我们目前限制用户可以使用基于角色的模型看到的内容。因此,每篇文章都附有一系列角色,如果用户也是其中一个角色的成员,他/她可以查看该文章。
当然,搜索应该只返回用户有权访问的结果。
我有点卡在哪里开始或如何做到这一点。我以后需要过滤结果吗?我是否创建了基于角色的索引?
如果有人能指出我正确的方向,我们将非常感激。
感谢。斯蒂芬妮。
答案 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'文件
我已经绘制了授权方案以便更好地理解
改编自http://wiki.apache.org/solr/SimpleFacetParameters#Multi-Select_Faceting_and_LocalParams
的查询