Использование функции распада только для совпадений выше источника - PullRequest
0 голосов
/ 06 мая 2019

POST фильмов / _поиск? Довольно

{
  "_source": {
    "includes": [
      "*.title",
      "*.release_date",
      "*.running_time_secs"
    ],
    "excludes": [
      "*.actors*",
      "*.genres"
    ]
  },
  "query": {
    "function_score": {
      "query": {
        "match_phrase": {
          "fields.directors": {
            "query": "James Cameron"
          }
        }
      },
      "functions": [
        {
          "gauss": {
            "fields.running_time_secs": {
              "origin": "7200",
              "scale": "1",
              "offset": "0",
              "decay": 0.5
            }
          }
        }
      ]
    }
  }

Мне нужно снизить количество подходящих документов, чье поле «running_time_secs» больше 7200. Я написал запрос выше, используя decay_function. Но очевидно, что decay_funtions применяются к двум сторонам начала координат (для моего примера это означает 7200 и более 7200). Есть ли способ заставить его уменьшить счет только в одном направлении (значит, только выше 7200)?

С уважением,

1 Ответ

0 голосов
/ 06 мая 2019

Добавьте фильтр к вашей вложенной функции:

"functions": [
        {
           "filter": {
              "range" : {
                "fields.running_time_secs" : {
                   "gte" : 7200,
              }
            }
          },
          "gauss": {
            "fields.running_time_secs": {
              "origin": "7200",
              "scale": "1",
              "offset": "0",
              "decay": 0.5
            }
          }
        }
      ]

Теперь гауссиан будет применяться только к документам со временем выполнения более 7200, в то время как другие документы останутся без изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...