Atlas Search 自定义评分:使用 function_score 融合业务权重
讲解 MongoDB Atlas Search 中如何利用 function_score 组件将业务字段(如用户等级、商品热度)融入全文搜索的评分计算,实现个性化排序。 · 难度:入门 · +10XP
Atlas Search 自定义评分:使用 function_score 融合业务权重
Atlas Search 基于 Lucene 引擎,支持通过 function_score 来修改文档的默认相关性评分。本教程将演示如何创建带有 function_score 的索引定义,并在查询时通过 boost 参数将数值字段(如 price、popularity)或日期字段(如最近活动时间)转化为评分因子。你还会学到如何组合多个函数,如线性衰减、高斯衰减和多项式函数,以实现类似“热门且较新的内容优先展示”的效果。
{
$search: {
index: 'products_search',
function_score: {
query: { text: { path: 'description', query: 'wireless mouse' } },
functions: [
{
field_value: {
field: 'popularity',
factor: 0.5
}
},
{
gauss: {
origin: ISODate('2024-08-01'),
scale: 30,
decay: 0.5,
offset: 7
},
path: 'last_updated'
}
],
scoreMode: 'multiply'
}
}
}