V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SpringChang
V2EX  ›  Elasticsearch

ES 如何让中文词条排序靠前?

  •  
  •   SpringChang · 2022-09-16 10:44:47 +08:00 · 2140 次点击
    这是一个创建于 799 天前的主题,其中的信息可能已经有所发展或是发生改变。
    需求描述:
    我的 ES 某个索引中,有个 text 字段,支持 keyword 检索,包且仅包含中、英文,现在我的需求是让纯中文的内容检索出来的时候排序靠前,请问如何实现?

    栗子:
    name age sex
    张三 20 男
    李四 21 男
    alice 20 女
    bob 22 男
    张翠山 18 女
    julia 19 女

    要求:
    让张三,李四,张翠山靠前,alice, bob, julia 靠后。
    7 条回复    2022-09-16 16:14:39 +08:00
    cweijan
        1
    cweijan  
       2022-09-16 11:05:29 +08:00   ❤️ 1
    我想到的一种方式是使用 rank-feature, 这是记录一个数字, 数字越高排名越前

    https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-rank-feature-query.html
    deltadawn
        2
    deltadawn  
       2022-09-16 11:14:54 +08:00   ❤️ 1
    "sort": {
    "name.keyword": "desc"
    }
    SpringChang
        3
    SpringChang  
    OP
       2022-09-16 11:24:23 +08:00
    @cweijan 我瞧瞧!
    SpringChang
        4
    SpringChang  
    OP
       2022-09-16 11:25:11 +08:00
    @deltadawn 直接根据这个字段排序貌似也可以,但是有个问题,有些垃圾数据,比如符号字符或者乱码之类的也排序进来了。
    gy123
        5
    gy123  
       2022-09-16 11:26:17 +08:00
    第一步肯定是先分词查出按照优先级排序的结果集;
    然后取到本地后,将结果集判断中文和英文分别插入到两个集合,然后最后集合合并一起;

    不知道行不行~
    cnoder
        6
    cnoder  
       2022-09-16 11:52:00 +08:00
    中文评分高一点
    SpringChang
        7
    SpringChang  
    OP
       2022-09-16 16:14:39 +08:00
    @cnoder 怎么让中文评分高一些?老铁!可以详细说说么?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2730 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:06 · PVG 23:06 · LAX 07:06 · JFK 10:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.