如何编写用于弹性搜索匹配和模糊查询的 LINQ 表达式(NEST)
How to write LINQ expression for Elastic search match and fuzzy query(NEST)
你好有一个查询,我必须在其中使用模糊操作进行匹配。
{
"query": {
"match": {
"answer": {
"query": "conevrt o",
"fuzziness": 2
}
}
}
}
当我尝试使用 Lambda 表达式样式编写此代码时,我收到一条错误消息,提示无法将 int 转换为 NEST.fuzziness。
这是我对 lambda 表达式的看法。
match = drFuzzy.Text; //im getting text from the asp:dropdown(hardcoded 0,0.5,1,2)
int fuzz = Int32.Parse(match); // converting this to integer
var searchResponse = client.Search<StudResponse>(s => s
.Query(q => q
.Match(m => m
.Field(f => f.Answer)
.Query(key1)
.Fuzziness(fuzz) //throwing an error here. cannot convert from int to Nest.Fuzziness
)
)
);
提前致谢。
要传递 fuzinness 参数,您必须使用 Fuzziness
class 和 EditDistance
方法。 NEST 文档有一个很好的例子 match query usage,看看。
这是您在用例中使用 Fuzziness.EditDistance(..)
代码的方式。
client.Search<StudResponse>(s => s
.Query(q => q
.Match(m => m
.Field(f => f.Answer)
.Query(key1)
.Fuzziness(Fuzziness.EditDistance(fuzz))
)
));
希望对您有所帮助。
你好有一个查询,我必须在其中使用模糊操作进行匹配。
{
"query": {
"match": {
"answer": {
"query": "conevrt o",
"fuzziness": 2
}
}
}
}
当我尝试使用 Lambda 表达式样式编写此代码时,我收到一条错误消息,提示无法将 int 转换为 NEST.fuzziness。
这是我对 lambda 表达式的看法。
match = drFuzzy.Text; //im getting text from the asp:dropdown(hardcoded 0,0.5,1,2)
int fuzz = Int32.Parse(match); // converting this to integer
var searchResponse = client.Search<StudResponse>(s => s
.Query(q => q
.Match(m => m
.Field(f => f.Answer)
.Query(key1)
.Fuzziness(fuzz) //throwing an error here. cannot convert from int to Nest.Fuzziness
)
)
);
提前致谢。
要传递 fuzinness 参数,您必须使用 Fuzziness
class 和 EditDistance
方法。 NEST 文档有一个很好的例子 match query usage,看看。
这是您在用例中使用 Fuzziness.EditDistance(..)
代码的方式。
client.Search<StudResponse>(s => s
.Query(q => q
.Match(m => m
.Field(f => f.Answer)
.Query(key1)
.Fuzziness(Fuzziness.EditDistance(fuzz))
)
));
希望对您有所帮助。