ES6.1.2 +LTR 常用DSL

排序模型(learning to rank)发展史(偏推荐系统 「排序」是一个非常业务化的任务,其实践场景也多为搜索、广告、推荐,被用于解决排序任务的模型也被人一统称作了「排序模型」,但其实「排序模型」也是「普通模型」,只不过或多或少在业务层面针对排序做了一些针对。观察每一类算法模型的发展,最重要的不是事无巨细的记住所有迭代模型的细节,而是明白每一次发生迭代,每一次技术革新,都或多或少解决了上一代模型存在的某一些问题。记住他们迭代的契机,才是通晓了整个历史。这次就来梳理一下排序模型的发展史。提起推荐系统中的算法,最经典的莫过于协同过滤。协同顾虑最早可以追溯到 1992 阅读详情

ES6.1.2 +LTR 常用DSL

https://elasticsearch-learning-to-rank.readthedocs.io/
LTR插件中用的DSL是老的版本,新版本很多内容都改变了,新版本特征集构建部分应改为以下形式,在es6.1.2上测试成功。

function 返回某一列

GET tmdb/movie/_search
{
  "query": {
    "function_score": {
      "query": {
        "match_all": {}
      },
      "functions": [
        {
            "script_score": {
              "script": "_score +doc['vote_average'].value"
            }
        }
      ]
    }
  },
  "_source": [
    "original_title",
    "id",
    "vote_average"
  ]
}

LTR构建特征集

#more movie features
PUT _ltr/_featureset/more_movie_features
{
  "featureset": {
    "features": [
      {
        "name": "body_query",
        "params": [
          "keywords"
        ],
        "template": {
          "match": {
            "overview": "{{keywords}}"
          }
        }
      },
      {
        "name": "title_query",
        "params": [
          "keywords"
        ],
        "template": {
          "match": {
            "title": "{{keywords}}"
          }
        }
      }
    ]
  }
}

增加一个Function_score的特征

POST /_ltr/_featureset/more_movie_features/_addfeatures
{
  "features": [
    {
      "name": "user_rating",
      "params": [],
      "template_language": "mustache",
      "template": {
        "function_score": {
          "query": {
            "match_all": {}
          },
          "functions": [
            {
              "script_score": {
                "script": "doc['vote_average'].value"
              }
            }
          ]
        }
      }
    }
  ]
}

对以上特征进行查询验证

GET tmdb/movie/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "terms": {
            "_id": [
              "7555",
              "1370",
              "1369"
            ]
          }
        },
        {
          "sltr": { 
            "_name": "logged_featureset",
            "featureset": "more_movie_features",
            "params": {
              "keywords": "rambo"
            }
          }
        }
      ]
    }
  },
  "ext": {
    "ltr_log": {
      "log_specs": {
        "name": "log_entry1",
        "named_query": "logged_featureset"
      }
    }
  },
  "_source": [
    "original_title",
    "id",
    "vote_average"
  ]
}

创建模型

POST _ltr/_featureset/more_movie_features/_createmodel
{
  "model": {
    "name": "my_ranklib_model",
    "model": {
      "type": "model/ranklib",
      "definition": """
## LambdaMART
## No. of trees = 1000
## No. of leaves = 10
## No. of threshold candidates = 256
## Learning rate = 0.1
## Stop early = 100

<ensemble>
	<tree id="1" weight="0.1">
		<split>
			<feature> 1 </feature>
			<threshold> 10.357836 </threshold>
			<split pos="left">
				<feature> 2 </feature>
				<threshold> 11.950331 </threshold>
				<split pos="left">
					<feature> 1 </feature>
					<threshold> 6.815881 </threshold>
					<split pos="left">
						<feature> 2 </feature>
						<threshold> 8.725015 </threshold>
						<split pos="left">
							<feature> 1 </feature>
							<threshold> 0.0 </threshold>
							<split pos="left">
								<output> -2.0 </output>
							</split>
							<split pos="right">
								<output> -2.0 </output>
							</split>
						</split>
						<split pos="right">
							<output> -1.990678310394287 </output>
						</split>
					</split>
					<split pos="right">
						<feature> 2 </feature>
						<threshold> 8.814796 </threshold>
						<split pos="left">
							<feature> 2 </feature>
							<threshold> 7.3007236 </threshold>
							<split pos="left">
								<output> -1.9988385438919067 </output>
							</split>
							<split pos="right">
								<output> -1.9554523229599 </output>
							</split>
						</split>
						<split pos="right">
							<feature> 1 </feature>
							<threshold> 7.0104666 </threshold>
							<split pos="left">
								<output> -1.739653468132019 </output>
							</split>
							<split pos="right">
								<output> -1.516905426979065 </output>
							</split>
						</split>
					</split>
				</split>
				<split pos="right">
					<output> 2.0 </output>
				</split>
			</split>
			<split pos="right">
				<feature> 1 </feature>
				<threshold> 10.686367 </threshold>
				<split pos="left">
					<output> 2.0 </output>
				</split>
				<split pos="right">
					<output> 2.0 </output>
				</split>
			</split>
		</split>
	</tree>
</ensemble>
"""
    }
  }
}

查看当前model

GET _ltr/_model/my_ranklib_model

search use model

POST tmdb/_search
{
  "query": {
    "query_string": {
      "query": "rambo"
    }
  },
  "rescore":{
    "query":{
      "rescore_query":{
        "sltr":{
          "params":{
            "keywords":"rambo"
          },
          "model":"my_ranklib_model"
        }
      }
    }
  },
  "ext":{
    "ltr_log":{
      "log_specs":{
        "name":"log_entry1",
        "rescore_index":0
      }
    }
  }
  ,
  "_source": [
    "original_title",
    "id",
    "vote_average"
  ]
}

取列的值

GET tmdb/movie/71508
POST tmdb/_search
{
  "query": {
    "function_score": {
      "field_value_factor": {
        "field": "popularity",
        "missing": 0
      }
    }
  },
  "_source": ["original_title",
  "id",
  "vote_average",
  "popularity"
  ]
}
RediSearch、Meilisearch、Typesense性能对比与场景选型指南 搜索引擎是现代应用的核心基础设施,其本质是倒排索引、内存计算与查询协议的协同系统。理解不同引擎的底层原理——如位图交集加速数值过滤、内存池优化C++查询路径、自动Schema推断简化前端集成——是实现低延迟(P95<30ms)和高吞吐的关键。技术价值不仅在于‘比ES快5倍’的压测数字,更在于匹配业务真实约束:读多写少场景依赖RediSearch的NUMERIC+TAG字段建模,MVP验证阶段首选Meilisearch的零配置API,而金融风控等亚毫秒敏感场景需Typesense的SIMD排序与预计算缓存。本 阅读详情

相关推荐

tangram-es:使用OpenGL ES的2D和3D地图渲染器

七巧板ES Tangram ES是一个C ++库,用于使用OpenGL ES从矢量数据渲染2D和3D地图。 它是的对应物。 该存储库既包含核心渲染库,又包含使用Android,iOS,Mac OS X,Ubuntu和Raspberry Pi上的库的示例应用程序。 平台目标 有关构建Tangram ES或在项目中使用它的更多信息,请参见下面的各个平台页面: 支持 有关概念概述和技术参考,请参见。 您也可以在tangram-chat gitter聊天室中找到我们: ://gitter.im/tangrams/tangram-chat 捐款欢迎 我们非常感谢您提供反馈,功能要求和贡献。 有关信息和说明,请参见 。 请注意,该项目是与贡献者行为准则一起发布的。 通过参与该项目,您同意遵守其条款。 参见 。 Tangram ES由创建,现在是 。

Elasticsearch7 ltr插件使用说明

参考: github demo:https://github.com/o19s/elasticsearch-learning-to-rank/tree/es_7_6_2/demo 文档:https://elasticsearch-learning-to-rank.readthedocs.io/ 1、 正常测试步骤安装demo流程就行,这里主要讲特征load 样式和collect加载成libsvm格式 步骤: 1)先执行load_features.py,这是获取构建需要的具体那些特征(通过加载1,2,3,4j

weixin_42357472的博客 1737

5分钟看懂LTE注网全流程:从PLMN选择到小区驻留的log分析技巧

本文深入解析了LTE终端从开机到成功驻留小区的完整流程,重点分享了基于QXDM和QCAT工具的log分析实战技巧。文章详细拆解了PLMN选择、System/Band扫频、小区搜索与同步、系统消息解析及驻留等关键步骤,并提供了高频问题场景的排查思路,帮助网络优化工程师快速定位终端侧、射频环境或网络配置问题。

app77的博客 432

Elasticsearch:使用 LTR 进行个性化搜索

如今,用户已经开始期待根据个人兴趣定制搜索结果。如果我们听的所有歌曲都是摇滚歌曲,那么在搜索 “Crazy” 时,我们会期望 Aerosmith 的歌曲排在搜索结果的首位,而不是 Gnarls Barkley 的歌曲。在本文中,我们将介绍个性化搜索的方法,然后以音乐偏好为例,深入探讨如何使用学习排名 (learning-to-rank: LTR) 来实现个性化搜索的具体方法。

Elastic 中国社区官方博客 2633

RFSoC应用XCZU47DR八发八收FPGA设计方案

本文介绍了基于Xilinx XCZU47DR RFSoC芯片的八发八收FPGA设计方案。该方案采用集成射频数据转换器的SoC架构,支持8路14bit ADC(5GSPS)和8路14bit DAC(9.85GSPS),可直接处理5GHz以下射频信号。硬件设计包含高性能输入缓冲器、QMC校正和复杂混频器,适用于5G/6G通信、雷达、卫星通信等领域。文章详细阐述了ADC/DAC子系统参数,包括通道配置、采样率、带宽等特性,并提供了FPGA顶层模块的硬件接口设计,展示了多通道数据收发处理能力。该方案无需外置混频器,

toonyhe的博客 1791

Halcon实战:基于图像清晰度自动筛选最佳对焦图片

本文详细介绍了如何使用Halcon实现基于图像清晰度的自动筛选最佳对焦图片技术。通过分析灰度值统计和标准差等核心指标,结合实战代码示例,帮助开发者高效处理工业检测中的对焦问题,提升自动化检测的准确性和效率。

weixin_27015733的博客 442

ES-LTR粗排模块

Elasticsearch学习排名插件使用机器学习提高搜索相关性排名。它为维基媒体基金会和Snagajob等地方的搜索提供了动力!

kk的博客 635

Gradient Accumulation 梯度累加/梯度累积 (Pytorch)

我们在训练神经网络的时候,batch_size的大小会对最终的模型效果产生很大的影响。一定条件下,batch_size设置的越大,模型就会越稳定。batch_size的值通常设置在 8-32 之间,但是当我们做一些计算量需求大的任务(例如语义分割、GAN等)或者输入图片尺寸太大的时候,我们的batch size往往只能设置为2或者4,否则就会出现 “CUDA OUT OF MEMORY” 的不可抗力报错。 那么如何在有限的计算资源的条件下,训练时采用更大的batch size...

hxxjxw的博客 5818

Elasticsearch:崭新的打分机制 - Learning To Rank (LTR)

“学习排名 (Learning To Rank)” 功能处于技术预览版,可能会在未来版本中更改或删除。Elastic 将努力解决任何问题,但此功能不受官方 GA 功能的支持 SLA 的约束。:此功能是在版本 8.12.0 中引入的,并且仅适用于某些订阅级别。有关更多信息,请参阅。Learning To Rank (LTR) 使用经过训练的机器学习(ML)模型来构建搜索引擎的排名函数。通常,该模型用作第二阶段的重新排序器,以提高简单的第一阶段检索算法返回的搜索结果的相关性。

Elastic 中国社区官方博客 6838

文档信息抽取技术:从非结构化文本到结构化信息的旅程

文档信息抽取技术是一种将非结构化文本转化为结构化信息的技术。这种技术可以从各类文档中自动提取出如实体、关系和其他重要信息,并将它们转化为方便计算机进一步处理和分析的格式。

INTSIG的博客 981

【智能制造】- APS系列|05 APS 排产的五大底层算法逻辑

很多人误以为APS只是给生产工单排先后顺序,实则整套系统依托成熟算法体系,完成多维度约束下的最优生产决策在制造业数字化排产普及的当下,依旧有不少制造管理者对APS存在认知误区,将其等同于简易工单排序工具。事实上,专业级高级计划与排程系统,早已脱离单纯按时间排序的基础功能,而是依托一整套成熟完善的底层算法逻辑,整合现场各类生产限制条件,在海量变量中自动推演、筛选、输出最贴合企业经营目标的生产方案。

qq_40821260的博客 435

在 Elasticsearch 中落地 Learning to Rank(LTR)

本文介绍了在Elasticsearch中实现Learning-to-Rank(LTR)重排序的方案。LTR通过机器学习模型融合多维度特征(文档属性、查询属性、相关性等),对Top-K结果进行二阶段重排,能显著提升电商搜索、内容推荐等场景的相关性。文章详细阐述了从标注集构建、特征工程到XGBoost/LGBM模型训练的完整流程,并展示了如何在Elasticsearch 9.x中部署reranker服务,通过retriever+LTR二阶段查询实现实时重排。最后针对常见问题提供了解决方案,帮助开发者快速构建更精

hello.reader 1144

eCognition易康操作教程(二):多尺度分割基于多光谱数据构建规则集,结合DSM高程数据提取建筑物、树木和绿地

一、数据 数据来源:教程中的实验数据,共包含RGB三个波段,还有数字地表模型(以下简称DSM)文件。 图一 RGB影像 数据特征:数据范围较小,要素种类少,仅包含较多的建筑和大片的绿地。由于建筑的房顶使用的材料和材料颜色不同,所以建筑的光谱特征没有规律,是不连续的特征。而绿地的光谱特征则十分容易分辨。 但是建筑通常具有规则的形状,而且建筑相比于周围其他要素...

蒹葭苍苍 8303

在 Elasticsearch 中使用 LTR 参与检索

本文介绍了在搜索系统中使用二阶段排序(LTR)的两种实施方案。第一阶段采用BM25等高召回方法,第二阶段通过LTR模型(XGBRanker/LambdaMART)进行精细排序,可提升10-30%点击率。文章详细讲解了两种实现方式:方案A将LTR作为rescorer,适用于8.12版本;方案B作为retriever(9.1+新特性),更适合与RRF/混合查询配合使用。实践建议包括合理设置window_size(100-200)、特征调优、性能优化和灰度发布策略。两种方案核心参数相同,都能实现个性化、可学习的多

hello.reader 637

【人工智能之深度学习】18. 金融风控实战:TCN时序卷积网络构建信用卡欺诈实时检测系统

摘要:信用卡欺诈交易识别是金融风控的核心环节,其面临欺诈样本占比低(仅0.1%)、实时响应要求高(毫秒级)等挑战。本文基于IEEE-CIS公开数据集,构建基于时序卷积网络(TCN)的欺诈检测系统,通过捕捉用户交易行为的时序模式识别异常。详细阐述全流程:从数据预处理(构造交易序列特征)、TCN模型设计(轻量级架构适配实时场景),到实时检测部署(异步处理确保低延迟)。实验显示,该系统精确率达63%、召回率89%,误杀率仅0.2%,推理延迟8ms,较XGBoost等传统模型性能显著提升。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1133

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

介绍 Elasticsearch 中的 Learning to Tank - 学习排名

从 Elasticsearch 8.13 开始,我们提供了原生集成到 Elasticsearch 中的学习排名 (learning to rank - LTR) 实现。LTR 使用经过训练的机器学习 (ML) 模型为你的搜索引擎构建排名功能。通常,该模型用作第二阶段重新排名器,以提高由更简单的第一阶段检索算法返回的搜索结果的相关性。这篇博文将解释此新功能如何帮助提高文本搜索中的文档排名以及如何在 Elasticsearch 中实现它。

Elastic 中国社区官方博客 2546

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

3.6 Elasticsearch-深度学习排序:Learning to Rank 插件安装与特征工程

通过 ltr 插件,Elasticsearch 从“文本检索引擎”升级为“ learned 排序平台”,把离线深度学习模型无缝搬到在线,实现毫秒级、可解释、可灰度的智能排序。如需 GPU 加速,可在本地服务化模型(torchserve/triton)再用 script_score 调用, latency 可压到 5 ms,但增加一次网络 hop。• 查询层:在 sltr 里加 “model”: “product_xgb_v2{{#ab}}_exp{{/ab}}” ,利用 mustache 变量动态切换。

IT老农民的博客 895

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ES学习摘要 - 12. Query DSL

ES提供了一套基于JSON的查询语言,主要包含两种语句: 叶子查询语句 - 具体条件的查询 组合查询语句 - 用来组合不同查询 12.1 Query and filter context query语句可以存在于两种场景中: Query Context - query参数中,出了决...

chunlie7017的博客 187

用 Eland 在 Elasticsearch Serverless 部署 Learning-to-Rank 排序模型

本文介绍了基于Elasticsearch和XGBoost的LTR(Learning to Rank)流程。主要内容包括:1)离线阶段通过Eland工具准备Judgment List数据,抽取特征并训练XGBRanker模型;2)使用Eland导入模型到Elasticsearch;3)在线检索采用两阶段策略,先召回200条文档再进行LTR重排;4)模型管理与灰度发布方案;5)常见问题及优化建议。该流程实现了从数据准备、特征工程、模型训练到线上部署的全链路,通过结合传统检索与机器学习提升搜索效果。

hello.reader 715

Elasticsearch 搜索模板(Search Templates)把“可配置查询”装进 Mustache

本文介绍了Elasticsearch中的搜索模板(Search Template)功能,它通过Mustache模板语言将搜索请求模板化存储,实现查询逻辑与业务代码的解耦。文章从基础用法、Mustache语法要点、复杂检索策略模板化到工程化落地等方面进行了详细说明,并总结了常见问题与解决方案。搜索模板能有效提升搜索系统的可维护性,支持多团队协作,同时需要注意性能优化与安全控制。

hello.reader 1535

Redis Search vs Elasticsearch:搜索选型的性能真相与落地决策

搜索引擎选型本质是权衡——全文检索、倒排索引、内存索引、分布式聚合等基础概念决定了不同引擎的技术边界。Redis Search依托Trie树与全内存索引实现极致低延迟,适合单机小规模关键词查询;Elasticsearch基于Lucene构建多阶段相关性排序与分布式容错能力,支撑复杂分析与企业级运维。二者差异不在‘快慢’本身,而在于索引结构设计、查询执行模型与数据一致性保障机制。实际应用中,高频简单搜索宜用Redis Search加速,深度分析与语义理解仍需ES支撑。本文结合真实业务卡点,解析何时该用内存索引

weixin_29587015的博客 299

探寻搜索领域Elasticsearch的搜索结果相关性优化

本文旨在系统性地解析Elasticsearch相关性优化的核心技术,覆盖从基础算法原理到生产环境调优的全链路知识。重点解决搜索结果排序不准确、用户意图匹配偏差、长尾查询效果差等典型问题。第2章解析相关性核心机制第3章深入BM25算法实现第4章建立数学模型框架第5章实战电商搜索优化案例第6-8章扩展应用场景和工具链第9-10章总结展望和问题解答TF-IDF:词频-逆文档频率统计方法BM25:概率相关性评分模型Query Context:查询上下文(影响评分)

专注搜索引擎技术 662

elasticsearch 概念(2)插件和使用

安装 ES依赖于JDK,使用Oracke JDK或OpenJDK均可。 JDK在不同平台的安装方式各异,具体方法这里不再介绍。ES的安装也非常容易,通常只需要简单修改其配置文件中的集群名称,并启动服务即可,这里不再赘述。 ElasticSearch在设计上支持插件式体系结构,用户可根据需要通过插件来增强ElasticSearch的功能。 ...

weixin_34163553的博客 107

Elastic:开发者上手指南

你们好,我是Elastic的刘晓国。如果大家想开始学习Elastic的话,那么这里将是你理想的学习园地。在我的博客几乎涵盖了你想学习的许多方面。在这里,我来讲述一下作为一个菜鸟该如何阅读我的这些博客文章。 我们可以按照如下的步骤来学习: 1)Elasticsearch简介:对Elasticsearch做了一个简单的介绍 2)Elasticsearch中的一些重要概念:cluster,n..........................................................

Elastic 中国社区官方博客 17万+

从向量搜索到AI代理:Elasticsearch如何重塑智能搜索的未来

本文探讨了Elasticsearch如何通过向量搜索和AI代理技术推动智能搜索的革新。从语义理解到主动协助,Elasticsearch 8.0+版本的技术突破使其成为智能搜索系统的核心组件,广泛应用于电商、法律和医疗等领域。文章还提供了实战案例和性能优化建议,展示了Elasticsearch在AI时代的无限潜力。

docker7nomad的博客 706

鸿蒙原生 ArkTS 布局方式之 TextAlign:文字在 Text 组件中的对齐策略深度解析

本文深入解析鸿蒙原生ArkTS中的TextAlign属性,详细介绍了文字在Text组件中的三种对齐策略:TextAlign.Start(左对齐)、TextAlign.Center(居中)和TextAlign.End(右对齐)。文章通过完整实战案例,对比分析了不同对齐方式的适用场景与实现原理,并区分了textAlign与布局属性alignItems/justifyContent的差异。核心要点包括:TextAlign影响文字在组件宽度内的位置而非父容器位置;默认Start适用于常规文本,Center常用于标题

m0_67000457的博客 205
上一篇: Breeze矩阵和数组之间的转换
下一篇: LTRChain多模型查询
风翔
博客等级 码龄19年 116粉丝 28原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风翔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值