2017-02-16 5 views
0

Пытаюсь нижеубывающая функция Elasticsearch оценка

PUT test/foo/1 
{ 
    "num": 100 
} 

GET test/foo/_search 
{ 
    "query" : { 
    "function_score" : { 
     "query" : { 
     "match" : { 
      "num": 100 
     } 
     }, 
     "functions" : [ 
     { 
      "filter" : { 
      "match_all" : { 
      } 
      }, 
      "gauss" : { 
      "num" : { 
       "origin": 0, 
       "scale" : 500, 
       "offset" : 0, 
       "decay" : 0.1 
      }, 
      "multi_value_mode" : "MIN" 
      } 
     } 
     ], 
     "score_mode" : "sum", 
     "max_boost" : 3.4028235E38 
    } 
    } 
} 

--- 

{ 
    "hits": { 
    "total": 1, 
    "max_score": 0.91201085, 
    "hits": [ 
     { 
     "_index": "test", 
     "_type": "foo", 
     "_id": "1", 
     "_score": 0.91201085, 
     "_source": { 
      "num": 100 
     } 
     } 
    ] 
    } 
} 

Я использую сумму в режиме партитуры. Поскольку оценка запроса равна 1, а оценка функции распада равна 0.91201085 Я ожидал, что оценка будет 1.91201085. Что мне не хватает?

ответ

1

использовать "boot_mode": "sum". Вы можете также использовать explain в запросе, чтобы понять, как документ был забит

POST testindexy/_search 
{ 
    "query" : { 
    "function_score" : { 
     "query" : { 
     "match" : { 
      "num": 100 
     } 
     }, 
     "functions" : [ 
     { 
      "filter" : { 
      "match_all" : { 
      } 
      }, 
      "gauss" : { 
      "num" : { 
       "origin": 0, 
       "scale" : 500, 
       "offset" : 0, 
       "decay" : 0.1 
      }, 
      "multi_value_mode" : "MIN" 
      } 
     } 
     ], 
     "boost_mode": "sum", 
     "score_mode" : "sum", 
     "max_boost" : 3.4028235E38 
    } 
    } 
} 
+1

Ровно, 'boost_mode' для объединения оценки запросов с function_score баллов, в то время как' score_mode' для объединения различных счетов в 'functions'. – christinabo

 Смежные вопросы

  • Нет связанных вопросов^_^