ES搜索结果排序有两种:
1、相似度匹配得分排序
2、字符分值权重排序
1:默认降序
第一种是系统默认的排序方法。
根据你所输入的关键字,与索引库中的文档进行对比,得出相关度分值,按照从大到小的顺序,降序将结果展示。
进行一个简单的测试:
第一次测试,制定了根据分值降序排序。
第二次测试,不指定,使用默认。
判断两种结果是否一致,若一致,则表示系统默认根据分值降序排序。
GET /law/_search
{
"query": {
"match": {
"fileName": "国有金融"
}
},
"sort": [
{
"_score": {
"order": "desc"
}
}
]
}
GET /law/_search
{
"query": {
"match": {
"fileName": "国有金融"
}
}
}
测试结果
可以看出来,一模一样。
有的人很细,发现了不一样的地方,took,第一次是2,第二次是3。
关于返回结果字段含义,可以看一下这篇文章:
2:自定义排序规则
第二种是自定义的排序规则
搜索结果的排列顺序,取决于关键字在文档中的权重。
比如在法规库中,参与索引的有两个字段,文件名和文件内容。
文件名的权重应该比文件内容的权重占比大。
非常简单,比如我在对文件名称匹配查询的时候,直接.boost(10),完事。
效果很明显,文件名称优先级更高。