elasticsearch-搜索-评分(四)
Dis Max Query
打分测试
PUT /blogs/_doc/1 { "title": "Quick brown rabbits", "body": "Brown rabbits are commonly seen." } PUT /blogs/_doc/2 { "title": "Keeping pets healthy", "body": "My quick brown fox eats rabbits on a regular basis." }
搜索
POST /blogs/_search { "query": { "bool": { "should": [ { "match": { "title": "Brown fox" }}, { "match": { "body": "Brown fox" }} ] } } }
文档1会排在前面
原因?shoud打分原理
1.查询should2个语句
2.加和2个评分
3.乘以匹配语句的总数
4.除以所有语句总数
纠正
dis_max会将语句中 匹配度最高的返回 而不会相加
POST blogs/_search { "query": { "dis_max": { "queries": [ { "match": { "title": "Quick pets" }}, { "match": { "body": "Quick pets" }} ] } } }
Multi Match
打分测试
1.添加索引
PUT /titles { "mappings": { "properties": { "title": { "type": "text", "analyzer": "english" } } } }
2.录入数据
POST titles/_bulk { "index": { "_id": 1 }} { "title": "My dog barks" } { "index": { "_id": 2 }} { "title": "I see a lot of barking dogs on the road " }
3.搜索
GET titles/_search { "query": { "match": { "title": "barking dogs" } } }
文档1会排在前面,barking dogs 分词 分成了barking dog 但是因为1更短所以排在前面
纠正
DELETE /titles PUT /titles { "mappings": { "properties": { "title": { "type": "text", "analyzer": "english", "fields": {"std": {"type": "text","analyzer": "standard"}}//增加一个分词字段 采用standard分词 } } } }
GET /titles/_search { "query": { "multi_match": { "query": "barking dogs", "type": "most_fields", "fields": [ "title", "title.std" ]//搜索 2个搜索的评分相加 可以让文档2排在前面 } } }
GET /titles/_search { "query": { "multi_match": { "query": "barking dogs", "type": "most_fields", "fields": [ "title^10", "title.std" ] //可以设置字段的权重 } } }
设置and关系
GET /titles/_search { "query": { "multi_match": { "query": "barking dogs", "type": "cross_fields", "operator":"and", "fields": [ "title^10", "title.std" ] //可以设置字段的权重 } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!