我正在尝试使用Nest.Net实现以下结构,并且没有看到任何方法来实现它。我可以添加另一个过滤器作为一个函数,但我只是想随机得分,所以我可以实现加权随机结果。我目前的工作是构建我的查询,将其序列化为字符串,然后用我的random_score语法填充,然后创建一个SearchDescriptor并使用QueryRaw方法。
注意函数括号内的random_score。此片段摘自ElasticSearch关于随机评分的文档。 https://www.elastic.co/guide/en/elasticsearch/guide/current/random-scoring.html
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",
}
}
}