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

简介: 假期重新把之前在新浪博客里面的文字梳理了下,搬到这里

需求:

个性化得分排序:类似 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(documents\field\payload ),而是外部直接传入的。从数学公式角度看一码事。

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({!dismaxqf=title v='杭州'})) desc");

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

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

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

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



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

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

目录
相关文章
|
12月前
|
存储 人工智能 自然语言处理
Elasticsearch Relevance Engine---为AI变革提供高级搜索能力[ES向量搜索、常用配置参数、聚合功能等详解]
Elasticsearch Relevance Engine---为AI变革提供高级搜索能力[ES向量搜索、常用配置参数、聚合功能等详解]
Elasticsearch Relevance Engine---为AI变革提供高级搜索能力[ES向量搜索、常用配置参数、聚合功能等详解]
|
算法 索引
阿里云 Elasticsearch 使用 RRF 混排优化语义查询结果对比
Elasticsearch 从8.8版本开始,新增 RRF,支持对多种不同方式召回的多个结果集进行综合再排序,返回最终的排序结果。之前 Elasticsearch 已经分别支持基于 BM25 的相关性排序和向量相似度的召回排序,通过 RRF 可以对这两者的结果进行综合排序,可以提升排序的准确性。
2126 0
|
2月前
|
SQL JSON 大数据
ElasticSearch的简单介绍与使用【进阶检索】 实时搜索 | 分布式搜索 | 全文搜索 | 大数据处理 | 搜索过滤 | 搜索排序
这篇文章是Elasticsearch的进阶使用指南,涵盖了Search API的两种检索方式、Query DSL的基本语法和多种查询示例,包括全文检索、短语匹配、多字段匹配、复合查询、结果过滤、聚合操作以及Mapping的概念和操作,还讨论了Elasticsearch 7.x和8.x版本中type概念的变更和数据迁移的方法。
ElasticSearch的简单介绍与使用【进阶检索】 实时搜索 | 分布式搜索 | 全文搜索 | 大数据处理 | 搜索过滤 | 搜索排序
|
2月前
|
存储 自然语言处理 Java
ElasticSearch 实现分词全文检索 - 经纬度定位商家距离查询
ElasticSearch 实现分词全文检索 - 经纬度定位商家距离查询
15 0
|
4月前
|
监控 NoSQL MongoDB
MongoDB全文检索: 助力快速精准的文本搜索
MongoDB全文检索: 助力快速精准的文本搜索
199 0
|
SQL 数据挖掘
白话Elasticsearch39-深入聚合数据分析之案例实战_搜索+聚合: 统计指定品牌下每个颜色的销量
白话Elasticsearch39-深入聚合数据分析之案例实战_搜索+聚合: 统计指定品牌下每个颜色的销量
138 0
|
数据挖掘 索引
白话Elasticsearch34-深入聚合数据分析之案例实战bucket嵌套实现颜色+品牌的多层下钻分析
白话Elasticsearch34-深入聚合数据分析之案例实战bucket嵌套实现颜色+品牌的多层下钻分析
98 0
|
存储 JSON 搜索推荐
41-微服务技术栈(高级):分布式搜索引擎ElasticSearch(RestClient文档处理[搜索/分页/高亮/地理坐标])
在前面的学习中,笔者带领大家完成海量数据导入ES,实现了ES基本的存储功能,但是我们知道ES最擅长的还是搜索、数据分析。所以本节笔者将继续带领大家研究一下ES的数据搜索功能,同上节一样,继续分别采用DSL和RestClient实现搜索。
169 0
|
存储 JSON 自然语言处理
40-微服务技术栈(高级):分布式搜索引擎ElasticSearch(DSL语法、搜索结果[排序/分页/高亮]处理)
在前面的学习中,笔者带领大家完成海量数据导入ES,实现了ES基本的存储功能,但是我们知道ES最擅长的还是搜索、数据分析。所以本节笔者将继续带领大家研究一下ES的数据搜索功能,同上节一样,继续分别采用DSL和RestClient实现搜索。
123 0
|
自然语言处理 数据库 索引
全文检索工具elasticsearch:第四章:开发电商的搜索列表功能
全文检索工具elasticsearch:第四章:开发电商的搜索列表功能
214 0
全文检索工具elasticsearch:第四章:开发电商的搜索列表功能
下一篇
无影云桌面