【问题标题】:Solr: Best way to query for documents added this current week?Solr:查询本周添加的文档的最佳方式是什么?
【发布时间】:2013-04-08 21:10:33
【问题描述】:

好的,伙计们。所以我希望我的查询能够命中相同的过滤器缓存,我真正不想做的是在我的代码中计算一周的开始并基于此构造查询。有没有办法让 solr 根据周返回?

我在这里找不到任何东西: http://docs.lucidworks.com/display/lweug/Solr+Date+Format 使用 [NOW/DAY-7DAYS TO NOW/DAY+1DAY] 不会有帮助,因为它不知道一周的开始和结束。

【问题讨论】:

    标签: datetime solr pysolr


    【解决方案1】:

    确实涉及客户端计算并基于此制定查询,因此,可能不是您要查找的内容:)

    在 java 中(如果你的一周从星期一开始):

    客户:

    (new Date().getTime()-345600000)/604800000 = 2257
    

    查询:

    select?q=*:*&fq={!frange%20l=2257%20u=2258}div(sub(field(last_update),345600000),604800000)&wt=json&indent=true
    

    【讨论】:

    • 你能解释一下这段代码在做什么吗?对不起,我不明白。这就是我现在在 pysolr "fq=created_dt:[NOW/DAY-"+str(datetime.datetime.utcnow().weekday())+"DAYS TO NOW/DAY+1DAY]"中使用的>
    • 604800000 是一周中的毫秒数。 new Date().getTime() 将给出自 1970 年 1 月 1 日以来的毫秒数。将其除以 604800000,我们得到当前周数 - 称之为 n。如果文档的 last_update 字段保存文档的创建日期,则 div(field(last_update),604800000) 将给出文档创建的星期。它应该在 n 和 n+1 之间。
    • 由于 1970 年 1 月 1 日是星期四,如果将星期一作为一周的开始,我会从中减去 4 天(345600000 毫秒)!
    猜你喜欢
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 2013-05-31
    相关资源
    最近更新 更多