我有一个文件是这样的:
<doc>
查询多值字段在Solr的
<arr name="StartDate">
<date>2012-08-18T17:00:00Z</date>
<date>2012-06-28T17:00:00Z</date>
<date>2013-02-28T17:00:00Z</date>
<date>2012-04-16T17:00:00Z</date>
<date>2012-08-06T17:00:00Z</date>
<date>2012-05-18T17:00:00Z</date>
<date>2012-07-04T17:00:00Z</date>
</arr>
<arr name="EndDate">
<date>2012-09-29T17:00:00Z</date>
<date>2012-06-29T17:00:00Z</date>
<date>2013-04-16T17:00:00Z</date>
<date>2012-05-07T17:00:00Z</date>
<date>2012-08-15T17:00:00Z</date>
<date>2012-06-22T17:00:00Z</date>
<date>2012-08-01T17:00:00Z</date>
</arr>
</doc>
我有日期范围,并希望找到一对起始日期的日期和结束日期覆盖范围。例如,如果输入范围(x,y)为2012-08-18 < x和2012-09-29 > y,则第一对startDate和EndDate(2012-08-18 TO 2012-09-29)返回true。
我写这样的查询:
开始日期:[1995-12-31T23:59:59.999Z TO 2012-08-18T00:00:00.000Z]日期和结束日期:2012-09-29T00:00 :00.000Z TO 2099-01-01T00:00:00.000Z]
但问题是SOLR搜索所有匹配日期中的14个项目的集合,而我只是想逐一比较它们(1与1,2与2 ...)。
请帮助告诉我该怎么做。非常感谢。
您的第一个解决方案。我正在考虑使用Solr'函数'查询。只要我们可以迭代2个数组,我们就可以找到实现它的方法。只是我的想法。我对Solr很新。谢谢,等待其他答案。 – dtnam 2012-04-19 08:37:13
我怀疑订单是保证多值字段;我没有阅读源代码来检查这个问题,但它肯定有可能会以'[start2,start1,start3]'结束。 – beerbajay 2012-04-19 08:55:47
我能看到的其他方法是将(start1,end1)非规范化为一个可以搜索的值。然而这可能不是那么容易/可能的,所有 – Fuxi 2012-04-19 11:29:22