基本上我将权限ID存储在SOLR文档的多值字段中。登录用户必须能够访问所有这些ID,才能在搜索中显示文档。
例如,文档“A”具有权限“1”和“5”。用户“X”可以访问权限“1”,“2”和“5”。用户的权限存储在SOLR的外部。
我如何编写一个查询,基本上说明了“field.permissions IN(1,2,5)”for solr将返回具有任何权限“1”,“2”和“5”组合的文档,但绝对没有其他权限?
答案 0 :(得分:0)
我也在多值字段中存储权限,我只使用OR查询来匹配Solr查询中的多个电子邮件。此外,您可以尝试这样的事情,假设您在solr中有一个字段作为电子邮件,因此您可以通过电子邮件过滤电子邮件:(“abc@gmail.com”,def @ hotmal.com“)。不太清楚这是什么在这种情况下将返回,但它的工作方式类似于包含查询。
答案 1 :(得分:0)
据我所知,目前,solr对你提出的问题没有任何支持。 我可以提出另一种解决方案。 您可以将所有权限存储在单个字段中,而不是使用多值字段,例如:
access_control:[permission1 permission2 permission3]
并使用一个高度足以考虑所有可能排列的短语查询,例如:
a)如果您正在使用标准查询解析器:access_control:" permission1 permission2 permission3" ~6 b)如果你正在使用edismax,那么qp = title~6和q = access_control:permission1 permission2 permission3
此解决方案应该只为您提供您正在寻找的结果。