请问solr如何按匹配度和更新时间排序,设置权重

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问solr如何按匹配度和更新时间排序,设置权重相关的知识,希望对你有一定的参考价值。

有两个字段 title(标题)和updatetime(更新时间), 现要满足,标题匹配的靠前,同时更新时间最新的靠前。高分求指教!

参考技术A 首先,updatetime靠前,这个比较容易sort=updatetime desc
其次,标题匹配靠前,如果改动较小的情况下,只要在搜索的时候增加title字段的权重即可,如果想绝对的靠前,那么需要对lucene的相似度打分公式进行相应的修改

如何在 SOLR 中按日期排序?

【中文标题】如何在 SOLR 中按日期排序?【英文标题】:How to sort by date in 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,但找不到。

谢谢。

【问题讨论】:

【参考方案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% 正确的

【讨论】:

以上是关于请问solr如何按匹配度和更新时间排序,设置权重的主要内容,如果未能解决你的问题,请参考以下文章

如何在 solr 查询中排序之前按分数限制

solr入门之权重排序方法初探之使用edismax改变权重

solr如何区间查询

请问django如何将字符型字段按数值型排序,如‘12,123,1111,133’,排序后结果为12,123,133,1111,在线等

如何在 SOLR 中按日期排序?

Solr - 如何按地理空间距离排序并返回距离?