【发布时间】:2020-12-10 09:22:22
【问题描述】:
为了根据字段值控制文档的分数,我在我的 DSL 查询中使用了带有 function_score 的过滤器,这会得到我期望的结果。
但是在 NEST 中实现这一点,结果是不同的;分数不适用于过滤器值。通过进一步调查,我发现 ScoreFunctionsDescriptor 不支持某些版本的 C# NEST 过滤器。还是这样吗? 您能否提供一个使用 NEST 实现此功能的工作选项? (我是 Elastic Search 和 C# 的新手,所以如果这是一个菜鸟问题,请原谅)。
我目前使用的是 Elasticsearch v7.6 和 NEST v7.5.1。
谢谢!
DSL 查询
GET /help/_search
{
"query":{
"function_score": {
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "AGC",
"fields": [
"title^2",
"description^1"
],
"type":"most_fields",
"fuzziness": "AUTO:4,8",
"prefix_length": 2,
"boost": 5
}
}
]
}
},
** "functions": [
{
"filter": {
"term":{
"product":"A"
}
},
"weight": 45
},
{
"filter": {
"term":{
"product":"B"
}
},
"weight": 20
},
{
"filter": {
"term":{
"product":"C"
}
},
"weight": 10
}
],**
"score_mode": "max",
"boost_mode": "multiply"
}
}
}```
【问题讨论】:
标签: elasticsearch nest