ES 排序,相关度和热度之间的平衡

ES 排序,相关度和热度之间的平衡

算法推荐要达到不错的效果,需要解决好这四类特征:相关性特征、环境特征、热度特征和协同特征。

现在一般使用 ES的 function_score 实现这里的逻辑。

  1. 现有的逻辑是先排序 相关度(这里的相关度是经过粗化的结果), 然后将热度作为二级排序。(这里的相关度粗化不好控制,需要不断调试)
    score change image
    一个实现:https://github.com/muhao1020/multistep_score

  2. 通过一个综合函数,将 相关度和 热度指标结合起来,成一个评分,然后通过此评分排序。(这种方式比难构造,并且极端值特别影响结果)

  3. 如果有多个热度指标如何展示热度值?(模型构建人为因素太多了)

如果有一个热度指标,仅看一个文档的指标(比如 查看数)是没有意义的,需要从整体 上看,将指标绝对值变成一个结合全局得出一个热度的指标。

仿照之前的同义词查询,完全也可以搞一个热词库,就是当前的新闻热词,在查询时如果分词匹配上了当前的热词,那么给这个热词加一个比较高的评分。热词库需要实时性更新。(这里的更新需要使用一种更新机制,或自动发现当前阶段的新闻热词,随着时间的衰减不断变化,在搜索的时候改变权重)

同时热词库又分为 查询热词库 、和内容热词库,具体方式是 查询热词库,保存一个用户查询分词的记录,可以利用redis 实现;内容热词需要热词库维护人员主动去发现当前的热点事件、新闻 热词,加入其中,同样也是查询匹配上的话,给一个较大的权重。

function_score

写的不错的博客:

https://blog.csdn.net/weixin_40341116/article/details/80913045

在使用ES进行全文搜索时,搜索结果默认会以文档的相关度进行排序,而这个 “文档的相关度”,是可以透过 function_score 自己定义的,也就是说我们可以透过使用function_score,来控制 “怎麽样的文档相关度更高” 这件事

function_score是专门用于处理文档_score的DSL,它允许爲每个主查询query匹配的文档应用加强函数, 以达到改变原始查询评分 score的目的

function_score会在主查询query结束后对每一个匹配的文档进行一系列的重打分操作,能够对多个字段一起进行综合评估,且能够使用 filter 将结果划分爲多个子集 (每个特性一个filter),并爲每个子集使用不同的加强函数

<think>好的,我现在需要帮助用户理解Elasticsearch的存储机制,并且要求用形象化的方式来解释。首先,我得回顾一下自己掌握的相关知识,再结合提供的引用内容来组织回答。 首先,Elasticsearch的存储机制主要涉及倒排索引、分片副本、近实时搜索以及文档存储结构。根据引用[2],倒排索引是ES快速检索的核心,类似于书籍末尾的索引,通过关键词映射到文档。我需要用生活中的例子来形象化这一点,比如书籍索引的例子。 分片副本在引用[5]中提到,ES集群将索引分片分布在多台机器上,提高可用性容错性。可以比喻成图书馆的分区备份,这样即使某个分区损坏,还有备份可用,同时多个分区可以同时处理请求,加快速度。 近实时搜索方面,引用[3]指出ES是一个web服务,遵循Restful风格,返回JSON数据。但这里可能更相关的是写入操作后的刷新机制,比如将数据先存到内存缓冲区,再定期刷新到段中,使得搜索可以很快看到新数据。这可以用快递分拣来比喻,先临时存放,再分批处理。 文档存储结构在引用[4]中提到的索引、映射、文档管理,每个文档像一张表格中的一行,包含字段类型。这可以类比为Excel表格,每个字段对应一列,类型提前定义好,确保数据规范。 接下来要确保回答符合用户的要求,结构清晰,分点解释,每个部分都有形象化的比喻,并且正确引用提供的资料。同时,需要生成相关问题,可能涉及倒排索引的工作原理、分片副本的作用、近实时搜索的实现,以及存储结构的管理。 需要检查是否有遗漏的部分,比如是否提到了集群的自动组成(引用[1]),但用户的问题主要关注存储机制,可能不需要详细讨论集群的自动组成,除非存储相关。分片副本确实属于存储机制的一部分,所以需要包含。 最后,生成的相关问题需要围绕存储机制的各个方面,比如倒排索引、分片优化、近实时搜索的应用场景,以及文档结构的管理。确保问题有逻辑关联,帮助用户深入理解。</think>### Elasticsearch存储机制的形象化解释 #### 1. **倒排索引:书籍目录的升级版** Elasticsearch最核心的存储机制是$倒排索引$,可以类比**图书馆的智能索引系统**。想象一本书的末尾有一个索引表,记录每个关键词出现的页码。例如: $$ \text{"算法: 15, 32, 77页"} \\ \text{"排序: 22, 45页"} $$ ES的倒排索引不仅记录关键词位置,还会存储词频、权重等信息,就像图书馆的索引系统能同时显示书籍热度相关度评分[^2]。 #### 2. **分片副本:图书馆的分区备份** 假设图书馆(索引)有100万本书: - **分片**:将书架分成5个区(分片),每个区存放20万本,读者可同时从5个区借书加速查询 - **副本**:每个区都制作备份副本,主分片损坏时自动切换副本 这种机制使ES具备横向扩展能力,如同图书馆通过增设分馆提升服务能力[^5] #### 3. **近实时搜索:快递分拣流水线** 文档写入时经历三个阶段: ```plaintext 1. 快递包裹暂存区(内存buffer) 2. 按批次装车(刷新到segment) 3. 物流信息更新(可搜索) ``` 整个过程通常在1秒内完成,就像快递公司每小时批量更新物流信息,实现"准实时"查询[^3] #### 4. **文档存储:智能表格系统** 每个索引的文档存储类似Excel表格: ```markdown | ISBN(主键) | 书名(text) | 出版日期(date) | 价格(double) | |-----------|------------|---------------|-------------| | 001 | 深入理解ES | 2023-01-01 | 89.5 | ``` 映射(mapping)提前定义字段类型,确保数据规范存储,如同表格设置列格式[^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值