垂直个性化排序之Solr如何支持

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 需求: 个性化得分排序:类似 Score= defaultTextScore*facetA + offlineValue*(1-factorA) 方案: 目前直接支持的排序、全部候选方案。推荐1  和2.  参见样例! 1: sort by (score, offlin

需求:


个性化得分排序:类似 Score=
defaultTextScore*facetA + offlineValue*
1-factorA


方案:


目前直接支持的排序、全部候选方案。推荐1 
2. 
参见样例!

1: sort by
(score,
offlinevalue*fa)   


这里offlinevalue*fa

fa可要可不要

2: sort by
(score*fa +offlinevalue*fb)
 
这里score *fa

其中fa有很多理解,可要是document boost或者field boost  
或者payloadoffline可以是域值

3: sort by
(score*offlinevalue*fa)   


这个场景本质上回到了 score*fa了,又回到了payload 
或者document或者field boost了。

4: sort
by( score * payload |doc_boost | field_boost| term_boost|
queryboost)

需求背景:文本相关第一位的,在文本相关区分度不大的时候,需要将好的商品、或者服务信息优先排(这里仍然受限第一排序文本相关分限制,如果放弃第一维度,只有第二维度的离线分值,那么文本相关性可能非常糟糕,反应到用户就是关键词
不显眼,好的离线值一直占住排头,出现饥饿现象)

进一步扩展,例如topN 先不排序,然后按某种方式排序、实现去重的维度的结果。


分析

1
 
最直接,也是推荐的方式。

3-4一回事,只是实现方式上不同:

2

看起来就显得稍微复杂了,其中fa的理解也有多重,


一种fa不是boost(documentsfieldpayload
),
而是外部直接传入的。从数学公式角度看一码事。

Eg
tf*itf*payload = score  score*fa
=tf*itf*payload*fa,
 
合并fa8payload

就是一项信息了,


同理,offline*fb
 
离线计算好就是offline’了,还是offline 
了。这样2

简化为 score+offline


从上分析来看,只有2种,要么1 
,要么2


对应2本质是
score+offlinevalue所谓的因子只是“逻辑理解”,对应实现来说“完全隐去了”


样例Score+offline

query.set("defType","lucene");

query.setQuery("description:店铺
AND _val_:reord_gpa^0.7");

query.setQuery("description:店铺
AND
_val_:sum\(reord_gpa,1\)");

query.setQuery("(description:店铺)^0.3 AND
_val_:sum\(reord_gpa,1\)"
);


至于: score

中的因子,如果固定0.8,然后所有文档都* 0.8,实际上就等于没起作用。这个0.8 
可以payload或者doc或者field boost引入。


至于:
gpa
中的因子,如果固定0.2,那么就直接在离线计算时算好


另外
 
3.*
版本中

query.setQuery("title:Aokang");

      
query.add("sort","sum(weight1,query({!dismax qf=title
v='
杭州'}))
desc");

      
query.addField("title,score,weight1,weight2,query({!dismax
qf=title v='
杭州'}))");


这种新式,是针对局部
query得分处理的


木有排序计算,直接返回topN,性能考虑

query.set("sort","_docid_ asc");


注解:BoostQParse,boost值乘上默认得分上,而一般_val_是将得分add 
到默认文本分上。
目前基于
3.* 
序列,尚不能直接对默认文本分进行引入到
function中,在4.*可以引用默认得分的中间参数到function中。
目前3.* 可以将function值加上或者乘上默认文本分(dismax的pb),或者局部query得分作为function的参数

最基础的 payload、documentboost、 fieldboost 、tf、itf 仍然是最本质的因子。
其他的扩展仍然是围绕他们展开的。本质没有脱离向量模型。

相关文章
|
存储 JSON 搜索推荐
41-微服务技术栈(高级):分布式搜索引擎ElasticSearch(RestClient文档处理[搜索/分页/高亮/地理坐标])
在前面的学习中,笔者带领大家完成海量数据导入ES,实现了ES基本的存储功能,但是我们知道ES最擅长的还是搜索、数据分析。所以本节笔者将继续带领大家研究一下ES的数据搜索功能,同上节一样,继续分别采用DSL和RestClient实现搜索。
151 0
|
存储 JSON 自然语言处理
40-微服务技术栈(高级):分布式搜索引擎ElasticSearch(DSL语法、搜索结果[排序/分页/高亮]处理)
在前面的学习中,笔者带领大家完成海量数据导入ES,实现了ES基本的存储功能,但是我们知道ES最擅长的还是搜索、数据分析。所以本节笔者将继续带领大家研究一下ES的数据搜索功能,同上节一样,继续分别采用DSL和RestClient实现搜索。
91 0
|
搜索推荐 算法 索引
基于Solr实现排序定制化参考
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。 本文Solr实现排序定制化的实践参考。排序实现有N种形式,最低成本、最快响应时间是目标。 一份索引,支持N种排序策略并且在线互不干扰是要考虑的。每一种实现,处理的场景是不同的,不要千篇一律。020排序,从索引到效果,有不少坑,这篇文章没有细说,原因是有些内容不好公开。
262 0
|
22天前
|
算法 关系型数据库 分布式数据库
使用 PolarDB 开源版 smlar 插件进行高效率相似文本搜索、自助选药、相似人群圈选等业务
背景PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力。本文将介绍使用 PolarDB 开源版 smlar 插件进行高效率相似文本搜索、自助...
44 0
|
22天前
|
关系型数据库 分布式数据库 PolarDB
PolarDB 开源版通过 rum 实现高效率搜索和高效率排序的解决方案
背景PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的 价值产出, 将数据变成生产力.本文将介绍PolarDB 开源版通过 rum 实现高效率搜索和高效率排序的解决方案...
41 0
|
自然语言处理 数据库 索引
全文检索工具elasticsearch:第四章:开发电商的搜索列表功能
全文检索工具elasticsearch:第四章:开发电商的搜索列表功能
195 0
全文检索工具elasticsearch:第四章:开发电商的搜索列表功能
|
存储 算法 搜索推荐
使用 PolarDB 开源版 smlar 插件进行高效率相似文本搜索、自助选药、相似人群圈选等业务
PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力. 本文将介绍使用 PolarDB 开源版 smlar 插件进行高效率相似文本搜索、自助选药、相似人群圈选等业务
349 0
|
存储 索引
Tile38空间数据库的核心搜索功能
Tile38空间数据库的核心搜索功能
241 0
|
搜索推荐
垂直个性化排序之Solr如何支持
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里
114 0
|
缓存 自然语言处理 算法
Solr支持的需求“转化”方案小结
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。
92 0