我正在调查一个搜索结果与预期不符的错误,并发现这是因为未应用增强功能。
该查询是使用NEST(6.6.0)使用以下代码生成的:
queryContainer = new MultiMatchQuery
{
Fuzziness = Fuzziness.Auto,
Query = querystring,
Type = TextQueryType.BestFields,
Fields = Infer.Fields<RecipeSearchModel>(
f1 => Infer.Field<RecipeSearchModel>(f => f.Title, 5),
f2 => f2.Description,
f3 => Infer.Field<RecipeSearchModel>(f => f.Ingredients, 3),
f4 => f4.Method,
f5 => Infer.Field<RecipeSearchModel>(f => f.Image.Alt, 4))
};
但是生成的查询没有应用任何提升。
"multi_match": {
"fields": [
"title",
"description",
"ingredients",
"method",
"image.alt"
],
"fuzziness": "AUTO",
"query": "chocolate",
"type": "best_fields"
}
从documentation可以看出,这似乎是正确的,为什么它不起作用?
最佳答案
确实看起来boost在某个地方被忽略了,here是github问题的链接。
现在,您可以尝试其他语法:
queryContainer = new MultiMatchQuery
{
Fuzziness = Fuzziness.Auto,
Query = "query",
Type = TextQueryType.BestFields,
Fields = Infer.Fields<RecipeSearchModel>()
.And(Infer.Field<RecipeSearchModel>(f => f.Title, 5))
.And<RecipeSearchModel>(f => f.Description)
.And(Infer.Field<RecipeSearchModel>(f => f.Ingredients, 3))
.And<RecipeSearchModel>(f => f.Method)
.And(Infer.Field<RecipeSearchModel>(f => f.Image.Alt, 4))
};
生成以下查询到elasticsearch
{
"query": {
"multi_match": {
"fields": [
"title^5",
"description",
"ingredients^3",
"method",
"image.alt^4"
],
"fuzziness": "AUTO",
"query": "query",
"type": "best_fields"
}
}
}
经NEST 6.6.0测试。
希望能有所帮助。
关于c# - Elasticsearch Nest客户端未应用提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58801023/