根据关键词命中词频计算权重
目前elasticsearch最常用的得分计算方式TF-IDF,原理的话就不赘述了,网上一抓一大把。这种利用词频与逆文档频率的计算方法的确很科学,应用也广泛(默认的得分计算方法)。但是对于一些使用检索的用户,有一种困惑,我某个字段命中多次为什么还排在后面呢?为什么不是我按照命中的词频来进行排序,再进一步优化的情况,就是某些字段的权重更高一些,这样更容易用户直观的理解。网上找了很多资料没找到,最终还是自己摸索出来了,下面用例子来快速描述场景吧。
需要实现的场景
拿新闻场景来
读者提问:ES 的权重排序有没有示列,参考参考?
刚好之前也稍微接触过,于是写了这篇文章,可以简单参考下。
在很多复杂的业务场景下,排序的规则会比较复杂,单一的降序,升序无法满足日常需求。不过 ES 中提供了给文档加权重的方式来排序,还是挺好用的。
首先初始化三条测试数据,方便查看效果:
id: 1,
title: "Java怎么学",
type: 3,
userId: 1,
tags: [
"java"
textContent: "我要学Java",
status: 1
转载并且补充:https://mp.weixin.qq.com/s/0g86s-o7kgn8ZUxA3UBc0w 请看原文
读者提问:ES 的权重排序有没有示列,参考参考?
刚好之前也稍微接触过,于是写了这篇文章,可以简单参考下。
在很多复杂的业务场景下,排序的规则会比较复杂,单一的降序,升序无法满足日常需求。不过 ES 中提供了给文档加权重的方式来排序,还是挺好用的。
首先初始化三条测试数据,方便查看效果:
POST score-test/_doc
"id": 1,
"title":
curl -X GET 127.0.0.1:9200/articles/article/1
curl -X GET 127.0.0.1:9200/articles/article/1?_source=title,user_id
curl -X GET 127.0.0.1:9200/articles/article/1?_source=false
查询所有
curl -X GET 127.0.0.1:9200/articles/
Elasticsearch搜索引擎Suggest查询建议-权重
重要:在加载数据库数据到es时,对索引字段“suggest_name”设置的值 进行修改
原:对索引字段直接进行设值,如:"suggest_name": "空调"
改:对索引字段进行编制,加入es的提供的权重判断,改为设值为:
"suggest_name": {
"input": "空调",
"weight": 50
备注: 50 为 ,1个字在整个字符串中的占比,比如“空”就占 50%,“调”字类
根据文档ID
curl -X GET 127.0.0.1:9200/articles/article/1
curl -X GET 127.0.0.1:9200/articles/article/1?_source=title,user_id
curl -X GET 127.0.0.1:9200/articles/article/1?_source=false
查询所有
curl -X GET 127.0.0.1:9200/articles/article/_search?_sou