lucene - Solr-多值日期字段,范围查询匹配 "any"/"count"?

标签 lucene solr

我将 Solr 用裁剪业预订引擎的一部分 - 我的条目有一个多值日期字段,用于存储属性(property)已预订的日期,因此不可用。我希望能够对此进行查询,并返回指定窗口内没有日期的条目。

我已经完成了一半 - 但现在 Solr 似乎正在返回条目,即使它有一个空闲日期 - 我希望它只返回范围内完全为空的条目。我的实体示例:

<doc>
    <arr name="DateBlockDates">
        <date>2011-02-25T00:00:00Z</date>
        <date>2011-02-26T00:00:00Z</date>
        <date>2011-02-27T00:00:00Z</date>
    </arr>
</doc>

查询在这种情况下效果很好:

-DateBlockDates:[2011-02-25T00:00:00Z TO 2011-02-27T00:00:00Z]

因为该实体确实对每一天都有日期 block 。但是,当我运行时:

-DateBlockDates:[2011-02-25T00:00:00Z TO 2011-02-28T00:00:00Z]

实体被返回,因为它没有 2011-02-28 的条目。

为了将我的问题放入老式 SQL 中,我想执行“count(DateBlockDates) = 0”。有什么想法吗?

最佳答案

这是我想出的最佳解决方案 - 不使用日期查询范围,而是使用:

-DateBlockDates:"2011-02-25T00:00:00.000Z"
AND -DateBlockDates:"2011-02-26T00:00:00.000Z"
AND -DateBlockDates:"2011-02-27T00:00:00.000Z"
AND -DateBlockDates:"2011-02-28T00:00:00.000Z"

虽然很乱,但是很管用。值得庆幸的是,我将处理相对较小的日期范围,因此查询不会变得太长。但如果有更好的解决方案,我很乐意听到。

关于lucene - Solr-多值日期字段,范围查询匹配 "any"/"count"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5914083/

相关文章:

solr - 如何将 Apache Solr 字段存储和检索为树(多维数组)?

mysql - 使用 solr 索引和搜索 MySQL

java - lucene 文档字段 setBoost 错误

elasticsearch - 如何创建不应与多个类别中的任何一个匹配的ElasticSearch查询

java - Solrj 日期时区

solr 自动完成多个字段中的关键字

java - 在 Solr 中索引约 1TB 富文本文档的最佳方法是什么?

linux - 在 TomCat 6.x 上启动 Apache Solr 4.x 时出错 : java.net.UnknownHostException: hostname: hostname: Name or service not known

Lucene:完全禁用加权,评分,排名,

jdbc - Elasticsearch JDBC River吞噬了整个内存