Запрос на совпадение Elasticsearch 5.x: вычислить оценку с использованием частоты термина и игнорировать частоту обратных документов

Я пытаюсь запросить поле, содержащее много слов, в то время как каждое слово уже умножено на его доминирование в документе. Поэтому, здесь мне нужна частота, а idf действительно меняет оценку документов.

Например, у меня есть два документа, которые содержат поле "слова", первый документ имеет слово "мода" 1000 раз, а второй документ также содержит слово "ребенок" 1000 раз. Оценка баллов по частоте терминов вернула бы одинаковый балл (приблизительно) для обоих, но дополнительная оценка idf изменяет результаты, которых я бы хотел избежать.

Отображение у меня довольно простое:

"query": {
   "match": {
      "words": {
          "query": "fashion baby"
      }
   }

}

И запрос является простым запросом на совпадение:

План объяснения выглядит следующим образом:

{
        "_shard": "[keywords_words][4]",
        "_node": "QQC692ZKQIif-_2eo_wO6Q",
        "_index": "keywords_words",
        "_type": "topic_words",
        "_id": "133",
        "_score": 407.61816,
        "_source": {},
        "_explanation": {
           "value": 407.61816,
           "description": "sum of:",
           "details": [
              {
                 "value": 407.61816,
                 "description": "weight(words:baby in 0) [PerFieldSimilarity], result of:",
                 "details": [
                    {
                       "value": 407.61816,
                       "description": "score(doc=0,freq=1000.0), product of:",
                       "details": [
                          {
                             "value": 3.5902672,
                             "description": "queryWeight, product of:",
                             "details": [
                                {
                                   "value": 3.5902672,
                                   "description": "idf, computed as log((docCount+1)/(docFreq+1)) + 1 from:",
                                   "details": [
                                      {
                                         "value": 2,
                                         "description": "docFreq",
                                         "details": []
                                      },
                                      {
                                         "value": 39,
                                         "description": "docCount",
                                         "details": []
                                      }
                                   ]
                                },
                                {
                                   "value": 1,
                                   "description": "queryNorm",
                                   "details": []
                                }
                             ]
                          },
                          {
                             "value": 113.53422,
                             "description": "fieldWeight in 0, product of:",
                             "details": [
                                {
                                   "value": 31.622776,
                                   "description": "tf(freq=1000.0), with freq of:",
                                   "details": [
                                      {
                                         "value": 1000,
                                         "description": "termFreq=1000.0",
                                         "details": []
                                      }
                                   ]
                                },
                                {
                                   "value": 3.5902672,
                                   "description": "idf, computed as log((docCount+1)/(docFreq+1)) + 1 from:",
                                   "details": [
                                      {
                                         "value": 2,
                                         "description": "docFreq",
                                         "details": []
                                      },
                                      {
                                         "value": 39,
                                         "description": "docCount",
                                         "details": []
                                      }
                                   ]
                                },
                                {
                                   "value": 1,
                                   "description": "fieldNorm(doc=0)",
                                   "details": []
                                }
                             ]
                          }
                       ]
                    }
                 ]
              }
           ]
        }
     },
     {
        "_shard": "[keywords_words][1]",
        "_node": "QQC692ZKQIif-_2eo_wO6Q",
        "_index": "keywords_words",
        "_type": "topic_words",
        "_id": "490",
        "_score": 344.91177,
        "_source": {},
        "_explanation": {
           "value": 344.9118,
           "description": "sum of:",
           "details": [
              {
                 "value": 344.9118,
                 "description": "weight(words:fashion in 2) [PerFieldSimilarity], result of:",
                 "details": [
                    {
                       "value": 344.9118,
                       "description": "score(doc=2,freq=1000.0), product of:",
                       "details": [
                          {
                             "value": 3.3025851,
                             "description": "queryWeight, product of:",
                             "details": [
                                {
                                   "value": 3.3025851,
                                   "description": "idf, computed as log((docCount+1)/(docFreq+1)) + 1 from:",
                                   "details": [
                                      {
                                         "value": 2,
                                         "description": "docFreq",
                                         "details": []
                                      },
                                      {
                                         "value": 29,
                                         "description": "docCount",
                                         "details": []
                                      }
                                   ]
                                },
                                {
                                   "value": 1,
                                   "description": "queryNorm",
                                   "details": []
                                }
                             ]
                          },
                          {
                             "value": 104.43691,
                             "description": "fieldWeight in 2, product of:",
                             "details": [
                                {
                                   "value": 31.622776,
                                   "description": "tf(freq=1000.0), with freq of:",
                                   "details": [
                                      {
                                         "value": 1000,
                                         "description": "termFreq=1000.0",
                                         "details": []
                                      }
                                   ]
                                },
                                {
                                   "value": 3.3025851,
                                   "description": "idf, computed as log((docCount+1)/(docFreq+1)) + 1 from:",
                                   "details": [
                                      {
                                         "value": 2,
                                         "description": "docFreq",
                                         "details": []
                                      },
                                      {
                                         "value": 29,
                                         "description": "docCount",
                                         "details": []
                                      }
                                   ]
                                },
                                {
                                   "value": 1,
                                   "description": "fieldNorm(doc=2)",
                                   "details": []
                                }
                             ]
                          }
                       ]
                    }
                 ]
              }
           ]
        }
     }

Результаты очень важны, поэтому, к сожалению, запрос constant_score в данном случае не актуален. Есть ли способ заставить запрос использовать только термин "частота"?

Заранее большое спасибо!

0 ответов

Другие вопросы по тегам