Random scoring - Elasticsearch 权威指南中文版


Random scoring

发布于 2019-07-04 字数 2176 浏览 945 评论 0

=== Random Scoring

You may have been wondering what consistently random scoring is, or why
you would ever want to use it.(((“consistently random scoring”)))(((“relevance”, “controlling”, “random scoring”))) The previous example provides a good use case.
All results from the previous example would receive a final _score of 1, 2,
3, 4, or 5. Maybe there are only a few homes that score 5, but presumably
there would be a lot of homes scoring 2 or 3.

As the owner of the website, you want to give your advertisers as much
exposure as possible. With the current query, results with the same _score
would be returned in the same order every time. It would be good to introduce
some randomness here, to ensure that all documents in a single score level
get a similar amount of exposure.

We want every user to see a different random order, but we want the same user
to see the same order when clicking on page 2, 3, and so forth. This is what is
meant by consistently random.

The random_score function, which(((“function_score query”, “random_score function”)))(((“random_score function”))) outputs a number between 0 and 1, will
produce consistently random results when it is provided with the same seed
value, such as a user’s session ID:


GET /_search { “query”: { “function_score”: { “filter”: { “term”: { “city”: “Barcelona” } }, “functions”: [ { “filter”: { “term”: { “features”: “wifi” }}, “weight”: 1 }, { “filter”: { “term”: { “features”: “garden” }}, “weight”: 1 }, { “filter”: { “term”: { “features”: “pool” }}, “weight”: 2 }, { “random_score”: { “seed”: “the users session id” } } ], “score_mode”: “sum”, } } }

The `random_score` clause doesn’t have any `filter`, so it will
be applied to all documents.
Pass the user’s session ID as the `seed`, to make randomization
consistent for that user. The same `seed` will result in the
same randomization.

Of course, if you index new documents that match the query, the order of
results will change regardless of whether you use consistent randomization or

上一篇:Boosting filtered subsets

下一篇:Decay functions


需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。