在 Solr 中搜索日期范围或空/无字段 [重复]
Posted
技术标签:
【中文标题】在 Solr 中搜索日期范围或空/无字段 [重复]【英文标题】:Searching for date range or null/no field in Solr [duplicate] 【发布时间】:2010-11-23 13:09:17 【问题描述】:我想在 Solr 中的文本字段上执行搜索。我想返回一个范围内或没有价值的所有匹配项。两个独立搜索词:
myfield:[start TO finish]
-myfield:[* TO *]
第一个返回范围内的所有匹配项。第二个返回“myfield”字段没有值的所有匹配项。 问题在于将这两者结合起来。
这不会返回任何匹配项:
myfield:[start TO finish] OR -myfield:[* TO *]
这将返回开始和结束之间的匹配项,但不返回空条目:
myfield:[start TO finish] OR (-myfield:[* TO *])
【问题讨论】:
试试this。 完美,谢谢。为清楚起见,确切的解决方案是:-(-myfield:[start TO finish] AND myfield:[* TO *]) 是否有人将此作为 Solr JIRA 中的错误提交?我看不出正逻辑版本不起作用的任何原因。 @samkass :同意,Solr 应该检测到这一点并在内部将表达式重写为它可以处理的内容。 【参考方案1】:Mauricio Scheffer 的解决方案对我有用,直到我将其包含在完整的查询中。查询本身可能包含最多三个具有范围的字段,并且中间的某处 Solr 无法处理它。 我已经设法通过下一个查询来解决它:
(myfield:[start TO finish] OR (*:* NOT myfield:[* TO *]))
即使在我的复杂查询中它也会唤醒,所以也许它会帮助其他人。
【讨论】:
【参考方案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 中没有按预期运行。
【讨论】:
嘿@sebastien-lorber -- 查询正在检查 MyDate 是在未来还是 null 对吗?以上是关于在 Solr 中搜索日期范围或空/无字段 [重复]的主要内容,如果未能解决你的问题,请参考以下文章