相似度
similarity
映射参数允许您自定义在搜索过程中如何为文本字段计算相关性分数。它定义了用于对匹配文档进行排名的评分算法,这直接影响搜索响应中结果的排序方式。
支持的相似性类型
BM25
(默认):使用现代的概率排名模型,该模型平衡了词频、文档长度和逆文档频率。boolean
:返回常量分数(1
或0
),因此如果您只关心匹配而不关心相关性,则应使用此类型。
在字段上设置自定义相似性
以下请求创建一个名为 products
的索引,其中 title
字段使用 boolean
相似性,该相似性为所有匹配项分配相同的分数
PUT /products
{
"mappings": {
"properties": {
"title": {
"type": "text",
"similarity": "boolean"
}
}
}
}
索引文档
使用以下命令索引示例文档
PUT /products/_doc/1
{
"title": "Compact Wireless Mouse"
}
查询和检查评分影响
使用以下命令按 title
字段搜索
POST /products/_search
{
"query": {
"match": {
"title": "wireless mouse"
}
}
}
您可以检查响应中 _score
字段返回的分数
{
...
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 2,
"hits": [
{
"_index": "products",
"_id": "1",
"_score": 2,
"_source": {
"title": "Compact Wireless Mouse"
}
}
]
}
}