在 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 中搜索日期范围或空/无字段 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Apache Solr 进行 Drupal 日期范围索引

DSE Solr 中的多个 OR 范围

基于其他领域的SOLR人气领域

solr关于日期范围查询

在日期字段上进行时间范围搜索的休眠条件

Flutter firebase获取今天在字段之间的文档-日期范围(startDate / endDate)[重复]