我正在尝试在Solr 6.6上运行OR查询,例如"字段:[x TO ] OR -field:[ TO *]"这意味着大于或等于某个值或null。即使两个字段:[x TO ]和-field:[ TO *]都有结果集,这个OR查询确实返回空集。当我使用括号,如"(字段:[x TO ])或(-field:[ TO *])"它只返回字段的结果:[x TO *]。你能解释一下这个查询的问题吗?
答案 0 :(得分:0)
这是由第二个语句的第二部分(OR -field:[x TO *]
)引起的。可以认为-
运算符从第一个运算符中减去第二个运算符 - 但问题是你没有任何东西可以减去第二个数据集。
当-field:foo
查询是查询的 only 部分时,Solr以所有文档的完整集合开头,因此在某种意义上,查询*:*
(所有文档)以查询为前缀。如果您的查询稍后在一组子句中,则不再是这种情况 - 它仅以第一个子句为前缀(如果有的话)。
要解决此问题,请明确:OR (*:* -field:[x TO *])
。