我使用Solr作为房产预订引擎的一部分 - 我的条目有一个多值日期字段,用于存储房产已经预订的日期,因此不可用。我希望能够对此进行查询,并返回在指定窗口内没有日期的条目。
我已经走了一半 - 但是现在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]
因为实体确实每天都有日期块。但是,当我跑:
-DateBlockDates:[2011-02-25T00:00:00Z TO 2011-02-28T00:00:00Z]
返回实体,因为它没有2011-02-28的条目。
要将我的问题放入老式SQL中,我想做一个“count(DateBlockDates)= 0”。有什么想法吗?
答案 0 :(得分:2)
这是我提出的最佳解决方案 - 不使用日期查询的范围,而是使用:
-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"
它很乱,但它有效。值得庆幸的是,我将处理相对较小的日期范围,因此查询不会太长。但如果有更好的解决方案,我很乐意听到它。