【问题标题】:How to sort by date in SOLR?如何在 SOLR 中按日期排序?
【发布时间】:2012-10-09 20:33:24
【问题描述】:

我想对 SOLR 搜索返回的结果和分数进行排序,如何根据日期获得分数,如下所示:

Suppose for keywords "football"
  12-10-2012 - 3.2
  13-10-2012 - 1.5

我的 solr 日期归档如下:

  <field name="published_date" datetimeformat="dd-MM-yyyy"  type="date" indexed="true" stored="true"/>

我检查了这个docs,但找不到。

谢谢。

【问题讨论】:

    标签: search solr


    【解决方案1】:

    你可以在URL中传递sort参数

    例如sort=published_date desc 用于按发布日期降序排列的文档。

    如果要按分数和日期排序,可以使用sort=score desc, published_date desc

    【讨论】:

    • 当 m 查询 solr 服务器时,sort=published_date desc 中的 date 和 desc 之间的空间被替换 %20
    【解决方案2】:

    取自the wiki

    Although not technically a Syntax difference, please note that if you use 
    the Solr "DateField" type, any queries on those fields (typically range queries) 
    should use either the Complete ISO 8601 Date syntax that field supports, 
    or the DateMath Syntax to get
    relative dates. Examples:
    
    timestamp:[* TO NOW]
    
    createdate:[1976-03-06T23:59:59.999Z TO *]
    
    createdate:[1995-12-31T23:59:59.999Z TO 2007-03-06T00:00:00Z]
    
    pubdate:[NOW-1YEAR/DAY TO NOW/DAY+1DAY]
    
    createdate:[1976-03-06T23:59:59.999Z TO 1976-03-06T23:59:59.999Z+1YEAR]
    
    createdate:[1976-03-06T23:59:59.999Z/YEAR TO 1976-03-06T23:59:59.999Z] 
    
    NOTE:TO must be uppercase, or Solr will report a 'Range Goop' error. 
    

    将它与this 结合起来,工作就完成了 :) 这很简单,只需要在开始时进行一些尝试

    稍作修改:此方法允许您根据日期范围检索值并根据它们的值对它们应用分数提升。显然你是在询问如何根据基本分数和日期检索排序,所以我的答案不是 100% 正确的

    【讨论】:

      猜你喜欢
      • 2018-01-14
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      • 2016-11-29
      • 2020-06-18
      • 2022-11-14
      相关资源
      最近更新 更多