You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elastic Search关键词堆砌与排序评分问题求助

演示文稿搜索排序实现方案

要满足你提出的两个场景排序需求,核心是设计一套优先精准匹配、次选低冗余关键词匹配、最后处理关键词堆砌的排序规则,同时全程做大小写不敏感处理。

核心规则(不区分大小写)

  1. 精准匹配优先:将标题和搜索词统一转为小写后,若完全一致,直接赋予最高排序优先级。
  2. 低冗余完整匹配次之:标题包含搜索词的所有关键词,且关键词无重复堆砌(出现次数接近搜索词中的次数),优先级仅次于精准匹配。
  3. 关键词堆砌排最后:标题大量重复搜索关键词,优先级最低。

具体打分逻辑(可直接落地)

先将所有标题和搜索词转为小写处理,再按以下步骤计算得分:

  • 精准匹配分:若lower(标题) == lower(搜索词),得100分(直接锁定第一顺位)。
  • 基础匹配分:若标题包含搜索词的所有关键词,得70分;否则得0分。
  • 冗余惩罚分:统计标题中搜索词所有关键词的总出现次数,除以搜索词中对应关键词的总出现次数,得到冗余系数:
    • 冗余系数 ≤ 1.5:不扣分
    • 冗余系数 > 1.5:每超出0.5,扣10分(比如冗余系数为4,超出2.5,扣50分)
  • 最终得分:基础匹配分 - 冗余惩罚分

场景验证

场景1:搜索词Bake cake

  • 演示文稿2:lower(标题) = bake cake,与搜索词小写完全一致,得100分,排首位。
  • 演示文稿1:lower(标题) = bake cake bake bake cake cake cake bake,包含所有关键词,基础分70;关键词总出现次数8,搜索词总次数2,冗余系数4,扣50分,最终得分20,排第二位。

场景2:新增演示文稿3bake A cake

  • 演示文稿2:精准匹配得100分,排第一。
  • 演示文稿3:lower(标题) = bake a cake,包含bake和cake所有关键词,基础分70;关键词总出现次数2,搜索词总次数2,冗余系数1,不扣分,最终得分70,排第二。
  • 演示文稿1:得分20,排第三。
    完全符合要求的排序:演示文稿2 → 演示文稿3 → 演示文稿1

内容的提问来源于stack exchange,提问作者Kharad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 10:50:47