Solr,只在日期时间字段中按时间搜索?

时间:2017-04-24 07:47:46

标签: datetime solr

我有一个结果列表:

{
    entry: 'name1',
    at: '2013-04-01 13:44:02'
},
{
    entry: 'name2',
    at: '2013-11-11 23:34:11'
},
{
    entry: 'name3',
    at: '2013-05-09 03:58:32'
},

现在我想编写一个搜索过滤条件,在'12:00:00'和'14:00:00'中产生匹配,因此按时间过滤,而不是日期,忽略日期本身。类似的东西:

at:[*T12:00:00Z TO *T14:00:00Z]

2 个答案:

答案 0 :(得分:2)

然后你需要把时间信息放在另一个字段中,比如一个色调,使时间成为一个整数,12:44:32将是124432,然后你可以轻松运行你需要的范围查询。

要创建该时间字段,您有以下几种选择:

  1. 从客户端本身将其添加到文档中
  2. 使用copyField复制到时间字段中,并使用PatternReplaceFilter删除值的日期部分
  3. 在UpdateRequestProcessor
  4. 中添加时间字段 到目前为止,1或2是最容易的。

答案 1 :(得分:1)

我阅读了一篇文章,您也可以使用regex to match a partial date。但在我看来这是一个丑陋的解决方案。

对于性能和可用性,如果你添加一个新的字段,其时间为午夜的秒数(或分钟数),我认为会好得多。