我建议将访问角色(是的,它的复数)存储为文档元数据。这里是必填字段access_roles
是可分面的多值字符串字段。
Doc1: access_roles:[user_jane, manager_vienna] // Jane and the Vienna branch manager may see it
Doc2: access_roles:[user_john, manager_vienna, special_team] // Jane, the Vienna branch manager and a member of special team may see it
拥有该文档的用户是default该文档的访问角色。
要更改文档的访问角色,您可以编辑access_roles
.
当 Jane 搜索时,访问角色她属于将成为查询的一部分。 Solr 将仅检索与用户访问角色匹配的文档。
当简(user_jane
),维也纳办事处经理(manager_vienna
)搜索,她的搜索如下:
q=mainquery
&fq=access_roles:user_jane
&fq=access_roles:manager_vienna
&facet=on
&facet.field=access_roles
它获取包含以下内容的所有文档user_jane
OR manager_vienna
in access_roles
; Doc1
and Doc2
.
当鲍勃 (user_bob
),特别小组成员(specia_team
)搜索,
q=mainquery
&fq=access_roles:user_bob
&fq=access_roles:special_team
&facet=on
&facet.field=access_roles
哪个获取Doc2
为了他。
查询改编自http://wiki.apache.org/solr/SimpleFacetParameters#Multi-Select_Faceting_and_LocalParams http://wiki.apache.org/solr/SimpleFacetParameters#Multi-Select_Faceting_and_LocalParams