在Solr中搜索日期范围或null / no字段

时间:2009-08-27 21:20:17

标签: solr

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

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

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

这不会返回匹配项:

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

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

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

2 个答案:

答案 0 :(得分:8)

Mauricio Scheffer的解决方案为我工作,直到我将其纳入完整查询。查询本身最多可包含三个带范围的字段,而Solr中间某处无法处理它。  我设法用下一个查询来解决它:

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

即使在我的复杂查询中它也会被唤醒,所以它可能会帮助其他人。

答案 1 :(得分:2)

我同意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中按预期运行。