ElasticSearch - использовать фактор значения поля запроса оценки функции с запросом на совпадение - PullRequest
0 голосов
/ 12 октября 2018

Я хочу использовать пример в официальных документах в сочетании с обычными запросами на совпадение и логическими запросами.Как это сделать?

GET /_search
{
    "query": {
        "function_score": {
            "field_value_factor": {
                "field": "likes",
                "factor": 1.2,
                "modifier": "sqrt",
                "missing": 1
            }
        }
    }
}

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#function-field-value-factor

Запрос на совпадение:

    "query": {
        "match" : {
            "name" : "star wars"
        }
    }

Логический запрос:

{
"query": {
    "bool": {
    "must": [
        {
        "match": {
            "name": "Star Wars"
        }
        }
    ],
    "should": [
        {
        "term": {
            "name.keyword": {
            "value": "Star Wars"
            }
        }
        }
    ]
    }
}
}

1 Ответ

0 голосов
/ 12 октября 2018

Да, это должно быть выполнимо.Если вы читаете далее в документации , которую вы связали с , есть пример:

GET /_search
{
    "query": {
        "function_score": {
          "functions": [
            {
              "gauss": {
                "price": {
                  "origin": "0",
                  "scale": "20"
                }
              }
            },
            {
              "gauss": {
                "location": {
                  "origin": "11, 12",
                  "scale": "2km"
                }
              }
            }
          ],
          "query": {
            "match": {
              "properties": "balcony"
            }
          },
          "score_mode": "multiply"
        }
    }
}

Изменение этого слегка для вашего варианта использования должно выглядеть примерно такэто:

GET /_search
{
    "query": {
        "function_score": {
          "functions": [
            {
              "field_value_factor": {
                "field": "likes",
                "factor": 1.2,
                "modifier": "sqrt",
                "missing": 1
              }
            }
          ],
          "query": {
            "match": {
              "name": "Star Wars"
            }
          },
          "score_mode": "multiply"
        }
    }
}

Отказ от ответственности: я не проверял это, просто ухожу из документации.

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