面试题答案
一键面试- 初步排序(按相关性得分):
- 步骤:使用基本的搜索请求,Elasticsearch默认会按照相关性得分(
_score
)对搜索结果进行排序。 - API及参数设置:
- 步骤:使用基本的搜索请求,Elasticsearch默认会按照相关性得分(
{
"query": {
"match": {
"your_search_field": "your_search_term"
}
}
}
这里your_search_field
是商品信息中用于搜索的字段,your_search_term
是具体的搜索词。
- 基于销量重排序:
- 步骤:使用
function_score
查询来进行重排序。在function_score
中,可以定义权重函数来提升销量高的商品排名。 - API及参数设置:
- 步骤:使用
{
"query": {
"function_score": {
"query": {
"match": {
"your_search_field": "your_search_term"
}
},
"functions": [
{
"field_value_factor": {
"field": "sales_volume", // 销量字段
"modifier": "log1p", // 可选择合适的修饰符,log1p可避免高销量商品权重过高
"missing": 1 // 销量缺失时的默认值
}
}
],
"boost_mode": "multiply" // 如何将权重与原始_score合并,multiply表示相乘
}
}
}
上述步骤中,先按相关性得分初步排序,然后通过function_score
中的field_value_factor
函数基于销量对结果进行重排序,提升销量高的商品排名。