【问题标题】:Configure solr to return no results by default将 solr 配置为默认不返回任何结果
【发布时间】:2017-01-24 20:18:50
【问题描述】:

如果没有传入有效的搜索参数,我们的 Solr 被配置为返回所有结果。例如: http://localhost:8983/solr/collection1/select?rows=1&title=bar 是一个有效的搜索(标题是一个有效的字段),它返回正确数量的结果(许多结果中的 1 个)。但是...http://localhost:8983/solr/collection1/select?rows=1&foo=bar整个 集合中返回一个(foo 不是有效字段)。

我读到有一种方法可以将 Solr 配置为默认返回 NO 结果(而不是全部)。它说“调整 requestHandler 配置以默认返回所有结果”(我认为这意味着有一种方法可以默认不返回任何结果)但我在网上找不到任何关于如何实际执行此操作的信息。

我们想要这样做的原因是因为我们正在实现一个我们不希望用户搜索的字段的黑名单,但是通过这样做,它允许所有其他字段通过并且我们希望那些返回 no结果(甚至更好 - 表明该字段无效的错误)。

Solr 是通过我们编写的 API 调用的,因此即使我们可以在每个调用中添加一个参数以使其默认不返回任何结果(noResultsIfNoValidSearch=true 或其他),也可以。

那么,关于如何将 Solr 配置为默认返回 NO 结果的任何想法?谢谢!

【问题讨论】:

    标签: solr lucene


    【解决方案1】:
    1. 将 echoParams=all 添加到您的查询中,以查看来自所有配置源的请求的所有内容。
    2. 很可能您在配置中的某处定义了 q=*:*,这就是导致返回所有内容的原因。删除它,您将一无所获。
    3. 如果您使用eDixMas,您可以查看uf 参数,该参数允许限制用户可以查询的字段。

      要允许除标题之外的所有字段,请使用 uf=*-title

    【讨论】:

      【解决方案2】:

      想到的最简单的事情是在您的 API 或配置中将 rows parameter 设置为 0,具体取决于您的要求。

      【讨论】:

      • 我不确定这会有什么帮助。如果传入有效条款,我仍然希望它能够正常运行。
      猜你喜欢
      • 2017-05-07
      • 1970-01-01
      • 2012-06-22
      • 2022-10-13
      • 2012-01-25
      • 1970-01-01
      • 2021-12-29
      相关资源
      最近更新 更多