C# 如何使用.NET NEST客户端在函数分数查询中创建筛选器
功能评分查询显示代码描述如下C# 如何使用.NET NEST客户端在函数分数查询中创建筛选器,c#,.net,
elasticsearch,nest,elasticsearch.net,C#,.net,
elasticsearch,Nest,Elasticsearch.net,功能评分查询显示代码描述如下 GET /_search { "query": { "function_score": { "query": { "match_all": {} }, "boost": "5", "functions": [ { "filter": { "match": { "test": "bar" } },
GET /_search
{
"query": {
"function_score": {
"query": { "match_all": {} },
"boost": "5",
"functions": [
{
"filter": { "match": { "test": "bar" } },
"random_score": {},
"weight": 23
},
{
"filter": { "match": { "test": "cat" } },
"weight": 42
}
],
"max_boost": 42,
"score_mode": "max",
"boost_mode": "multiply",
"min_score" : 42
}
}
}
我将此查询写入
var searchRequest=新的searchRequest
{
Query=新函数scoreQuery()
{
Query=new MatchAllQuery{},
增压=5,
函数=新列表
{
过滤器。。。?
},
MaxBoost=42,
ScoreMode=函数ScoreMode.Max,
BoostMode=FunctionBoostMode.Max,
MinScore=42
}
};
如何在函数中构建过滤器
IScoreFunction
界面只允许指数decayFunction
,GaussDateDecayFunction
,LinearGeoDecayFunction
,FieldValueFactorFunction
,RandomScoreFunction
,权重函数
,ScriptScoreFunction
函数是IScoreFunction
的集合。在示例JSON中,第一个函数是随机分数函数,第二个是权重函数。链接查询DSL示例有不同函数的示例,下面是一个与上面的JSON匹配的示例
var client=new ElasticClient();
var searchRequest=新的searchRequest
{
Query=新函数scoreQuery()
{
Query=new MatchAllQuery{},
增压=5,
函数=新列表
{
新随机函数
{
过滤器=新匹配查询
{
Field=“test”,
Query=“bar”
},
重量=23
},
新加权函数
{
过滤器=新匹配查询
{
Field=“test”,
Query=“cat”
},
重量=42
}
},
MaxBoost=42,
ScoreMode=函数ScoreMode.Max,
BoostMode=函数BoostMode.Multiply,
MinScore=42
}
};
var searchResponse=client.Search(searchRequest);
var searchRequest = new SearchRequest<ProductType>
{
Query = new FunctionScoreQuery()
{
Query = new MatchAllQuery {},
Boost = 5,
Functions = new List<IScoreFunction>
{
Filters...?
},
MaxBoost = 42,
ScoreMode = FunctionScoreMode.Max,
BoostMode = FunctionBoostMode.Max,
MinScore = 42
}
};