The function_score
query is the ultimate tool for taking control of the scoring process. It allows you to apply a function to each document that matches the main query in order to alter or completely replace the original query _score
.
In fact, you can apply different functions to subsets of the main result set by using filters, which gives you the best of both worlds: efficient scoring with cacheable filters.
It supports several predefined functions out of the box:
weight
weight
of 2
results in 2 * _score
.field_value_factor
_score
, such as factoring in a popularity
count or number of votes
.random_score
linear
, exp
, gauss
publish_date
, geo_location
, or price
into the _score
to prefer recently published documents, documents near a latitude/longitude (lat/lon) point, or documents near a specified price point.script_score
Without the function_score
query, we would not be able to combine the score from a full-text query with a factor like recency. We would have to sort either by _score
or by date
; the effect of one would obliterate the effect of the other. This query allows you to blend the two together: to still sort by full-text relevance, but giving extra weight to recently published documents, or popular documents, or products that are near the user’s price point. As you can imagine, a query that supports all of this can look fairly complex. We’ll start with a simple use case and work our way up the complexity ladder.
转自:https://www.elastic.co/guide/en/elasticsearch/guide/current/function-score-query.html
elasticsearch function_score Query——文档排序结果的最后一道墙
原文:http://www.cnblogs.com/bonelee/p/6480761.html