如何编写用于弹性搜索匹配和模糊查询的 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))
        )
    ));

希望对您有所帮助。