35

我想在 Solr 中的文本字段上执行搜索。我想返回一个范围内或没有价值的所有匹配项。两个独立搜索词:

myfield:[start TO finish]
-myfield:[* TO *]

第一个返回范围内的所有匹配项。第二个返回“myfield”字段没有值的所有匹配项。 问题是将这两者结合起来。

这不返回任何匹配项:

myfield:[start TO finish] OR -myfield:[* TO *]

这将返回开始和结束之间的匹配项,但不返回空条目:

myfield:[start TO finish] OR (-myfield:[* TO *])
4

2 回答 2

11

Mauricio Scheffer 的解决方案对我有用,直到我将其包含在完整的查询中。查询本身可能包含最多三个具有范围的字段,并且中间的某处 Solr 无法处理它。我已经设法通过下一个查询来解决它:

(myfield:[start TO finish] OR (*:* NOT myfield:[* TO *]))

即使在我的复杂查询中它也醒了,所以也许它会帮助其他人。

于 2014-05-26T14:01:16.543 回答
3

我同意 Mauricio Scheffer 的解决方案。

如果这有帮助,我转换了我的初始查询:

DocSource:"P" OR ( DocSource:"E" AND (MyDate:[NOW TO *] OR -MyDate:[* TO *] ) )

DocSource:"P" OR ( DocSource:"E" AND -( -MyDate:[* TO NOW] AND MyDate:[* TO *] ) )

在 Solr 4.1 中,第一个查询没有按预期运行。

于 2013-02-20T10:33:35.887 回答