配置solr默认情况下不返回任何结果

时间:2017-01-24 20:18:50

标签: solr lucene

如果没有传入有效的搜索参数,我们的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配置以默认返回所有结果”(我假设这意味着有一种方法可以默认返回任何结果)但我在网上找不到任何关于如何实际执行此操作的内容。

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

Solr是通过我们编写的API来调用的,所以即使我们可以为每个调用添加一个参数,使它在默认情况下不返回任何结果(noResultsIfNoValidSearch = true或者其他东西),这样就可以了。

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

2 个答案:

答案 0 :(得分:1)

  1. 将echoParams = all添加到您的查询中,以查看请求所包含的所有内容,来自所有配置源。
  2. 您最有可能在配置中的某处定义 q = *:* ,这是导致返回所有内容的原因。删除它,你什么也得不到。
  3. 如果您使用的是eDixMas,则可以查看 uf 参数,该参数允许限制用户可以查询的字段。
      

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

答案 1 :(得分:0)

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