【问题标题】:SOLR Query - see if multiple values are in a list of values?SOLR 查询 - 查看值列表中是否有多个值?
【发布时间】:2016-06-29 17:25:48
【问题描述】:

基本上,我将权限 ID 存储在 SOLR 文档的多值字段中。登录用户必须有权访问所有这些 ID,文档才能显示在他们的搜索中。

例如,文档“A”的权限为“1”和“5”。用户“X”有权访问权限“1”、“2”和“5”。用户的权限存储在 SOLR 的外部。

如何为 solr 编写一个基本上说明“field.permissions IN (1,2,5)”的查询,该查询将返回具有权限“1”、“2”和“5”的任意组合的文档,但绝对是没有其他权限?

【问题讨论】:

  • 你看过 Apache ManifoldCF 吗?

标签: java search solr


【解决方案1】:

我还将权限存储在一个多值字段中,并且我只是使用 OR 查询来匹配 Solr 查询中的多个电子邮件。另外,您可以尝试这样的事情,假设您在 solr 中有一个字段作为电子邮件,因此您可以将电子邮件过滤为电子邮件:("abc@gmail.com",def@hotmal.com")。不太确定这是什么在这种情况下会返回,但它的工作方式类似于包含查询。

【讨论】:

    【解决方案2】:

    据我所知,目前 solr 不支持您的要求。 我可以提出一个替代解决方案。 您可以将所有权限存储在单个字段中,而不是使用多值字段,例如:

    access_control:[权限1权限2权限3]

    并使用斜率足够高的短语查询来考虑所有可能的排列,例如:

    a) 如果您使用标准查询解析器:access_control: "permission1 permission2 permission3"~6 b) 如果您使用的是 edismax,那么 qp=title~6 和 q=access_control:permission1 permission2 permission3

    此解决方案应该只为您提供您正在寻找的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 1970-01-01
      相关资源
      最近更新 更多