假设我有关于开条的日志:
{
opened: '2013-11-05T00:00:00Z',
opened_start: '2013-11-05T12:00:00Z',
opened_end: '2013-11-05T14:00:00Z',
},
{
opened: '2013-15-05T00:00:00Z',
opened_start: '2013-15-05T11:00:00Z',
opened_end: '2013-15-05T13:00:00Z',
},
{
opened: '2013-11-05T00:00:00Z',
opened_start: '2013-11-05T18:00:00Z',
opened_end: '2013-11-05T19:00:00Z',
},
{
opened: '2013-11-12T00:00:00Z',
opened_start: '2013-11-12T02:00:00Z',
opened_end: '2013-11-12T14:00:00Z',
}
现在我只需要在00:00:00到06:00:00之间打开的酒吧。我对结构没有任何影响,但它基本上是这样构建的:
{
opened: 'YMD000',
opened_start: 'YMD02:00:00Z',
opened_end: 'YMD14:00:00Z',
}
编辑:我在考虑减少:opens_start - 打开所以我会得到只有次数:0000-00-00 02:00:00
答案 0 :(得分:1)
您可以将条形开口范围表示为XY空间中的坐标,开盘时间为X,关闭时间为Y.然后,您可以使用范围数学按Hoss's presentation查找重叠。< / p>
您可以使用自定义UpdateRequestProcessor链来操纵日期以将其转换为该格式。我认为你可能只需要提取一小时,因为这是你的粒度。
答案 1 :(得分:0)
昨天被问到:Solr, search only by time among datetime fields?
最简单的方法是添加另一个字段,并以适当的格式添加打开时间以便于查询,以下任何一个都可以使用:
现在,如果您不控制客户端,则需要在solr中添加字段,最简单的方法是使用copyField(请参阅上面的链接)或使用UpdateRequestProcessor(更多工作,不值得)。