如何使用范围在Solr查询中使用OR值

时间:2016-10-24 20:59:19

标签: solr lucene

我有fq=score_dx:[0.0 TO 1]

的查询

我们需要score_dx:[0.0 TO 1] OR score_dx:''

之类的东西

这不起作用。如何使用现有的OR null进行fq

2 个答案:

答案 0 :(得分:3)

这是要走的路:fq=(score_dx:[0.0 TO 1]) OR (*:* AND -score_dx:[* TO *])

它是如何工作的?为什么?这是一个解释尝试:

  • Solr Standard Query Parser不支持在字段中搜索空/空值。在这种情况下,需要取消过滤器,排除在字段中具有任何值的文档,以便查询保持有效。要匹配任何值,在使用带有否定查询的通配符([* TO *]部分)时,应使用range query来防止出现不一致的行为。

  • 在同一个fq参数中应用过滤器和否定过滤器时,您需要在后者上添加*:*,否则OR将无法正确应用(它会表现得很好)像AND),但我无法解释原因。似乎否定的查询需要一个完整的结果集来匹配它,否则它会相交"使用之前的过滤结果。

答案 1 :(得分:1)

尝试使用-field_name:*

等否定条款

我希望有所帮助。