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

2022-09-16 10:44:47 +08:00
 SpringChang
需求描述:
我的 ES 某个索引中,有个 text 字段,支持 keyword 检索,包且仅包含中、英文,现在我的需求是让纯中文的内容检索出来的时候排序靠前,请问如何实现?

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

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

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

不知道行不行~
cnoder
2022-09-16 11:52:00 +08:00
中文评分高一点
SpringChang
2022-09-16 16:14:39 +08:00
@cnoder 怎么让中文评分高一些?老铁!可以详细说说么?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/880478

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX