Elasticsearch Nest 字段加权 + 模糊匹配

4
我正在尝试使用.NET连接可用性设置Elasticsearch环境。我能够使用自定义模糊距离进行基本查询,但我不能在查询时进行字段提升。我已经尝试了几个教程/问题,例如Elasticsearch Nest Boost queryElastic Search using NEST Field Boosting,但NEST不识别“.OnFieldsWithBoost”或“.OnFields”。
我能够通过Elasticsearch的HTTP API进行一些字段提升:
POST /products/typeproduct/_search
{
  "query" : {
   "bool": {
      "should": [
        {
          "match": {
            "Title": {
              "query": "sometest",
              "boost": 10.0 
            }
          }
        },
        {
          "match": { 
            "Name": "sometest"
          }
        }
      ]
    }
  }
}

但是,我再次无法通过NEST语法匹配此查询,因为它不允许在“should”中使用多个“match”。

我的最终目标是能够提高某些字段(标题)的权重,而不是其他字段(名称),并在匹配中添加一些模糊性。任何帮助都将不胜感激。

我的Elasticsearch版本:2.2.0 我的NEST版本:2.0.2

1个回答

6
这是流畅查询:
var response = client.Search<Document>(search => search
    .Query(q => q.Bool(b => b
        .Should(
            s => s.Match(m => m.Query("sometest").Field(f => f.Title).Boost(1.1)),
            s => s.Match(m => m.Query("sometest").Field(f => f.Name).Fuzziness(Fuzziness.EditDistance(1)))
        ))));

该查询生成以下查询语句到elasticsearch:

{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "title": {
              "boost": 1.1,
              "query": "sometest"
            }
          }
        },
        {
          "match": {
            "name": {
              "query": "sometest",
              "fuzziness": 1
            }
          }
        }
      ]
    }
  }
}

我希望这正是您在找的内容:)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接