Применять разные значения повышения при поиске фразы в Elasticsearch?

Я хочу найти в Elasticsearch фразу, например "дата налогообложения физических лиц". Я хочу, чтобы возвращаемые результаты придавали больший вес термину "налог".

Пока я знаю, как повысить весь индекс или повысить для разных полей, но все еще не знаю, как повысить разные термины? Любая помощь??

2 ответа

Решение

Используя функцию Score, мы можем увеличить по полям

GET <index_name>/_search
{
    "query": {
        "function_score": {
           "query": {
            "query_string": {
               "query": "*personal tax date*",
               "fields": [
                "field_1",
                "field_2"
               ]
            }
            },
            "boost": "5",
               "functions": [
                          {
                  "filter": { "match": { "field": "tax" } },
                  "weight": 30
              },
              {
                  "filter": { "term": { "ent_name": "tax" } },
                  "weight": 25
              }
          ],
             "score_mode": "multiply",
            "boost_mode": "sum"
        }
    }

Вы можете использовать query_stringзапросить и увеличить термин, используя синтаксис строки запроса, как показано ниже:

{
  "query": {
    "query_string": {
      "query": "personal tax^2 date"
    }
  }
}
Другие вопросы по тегам