похоже, что в elasticserch nest нет поддержки коэффициента усиления в оценках функций

#elasticsearch #nest

#эластичный поиск #гнездо #elasticsearch

Вопрос:

в следующем запросе я хочу иметь возможность увеличить фильтр на число. в приведенном ниже запросе это выражается как «boost_factor»: 100. это прекрасно работает в elasticsearch, но, похоже, в Nest нет эквивалента. есть идеи, как это сконструировать?

 {
  "query": {
    "function_score": {
      "functions": [
        {
          "script_score": {
            "script": "_score * doc['somevalue'].value"
          }
        }, 
        {
          "filter": {
            "query":{
              "bool": {
                "should": [
                  {
                    "match": {
                      "title": {
                        "type": "phrase_prefix",
                        "query": "some query"
                      }
                    }  
                  }
                ]
              }
            }
          }, 
          "boost_factor": 100
        }
      ], 
      "query": {
      ...
      }
  

Ответ №1:

я действительно нашел ответ — разместите здесь, если кто-то хочет знать. это связано с различным использованием лямбд с несколькими функциями.

 s.Query(q => q
.FunctionScore(cfs => cfs
    .Functions(
        fn => fn.ScriptScore(sc => sc.Script("_score * doc['somevalue'].value")),    
        fn => fn
            .BoostFactor(100)
            .Filter(SetFunctionFilters(searchDescriptor)
        )
    )       
    .Query(qy => qy
    ...)