我有fq=score_dx:[0.0 TO 1]
我们需要score_dx:[0.0 TO 1] OR score_dx:''
这不起作用。如何使用现有的OR null
进行fq
?
答案 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:*
我希望有所帮助。