Релевантность по типу в том же поле в elasticsearch

Есть ли способ boost результатов поиска в одном и том же поле в зависимости от типа?

Мой базовый бустер выглядит примерно так:

GET _search
{
   "query": {
      "simple_query_string": {
         "query": "mangan",
         "fields":["_all", "title^6"]
      }
   }
}

Но для некоторых других документов я хочу, чтобы название было менее важным, поэтому я попытался добавить к нему префикс типа:

GET _search
{
   "query": {
      "simple_query_string": {
         "query": "mangan",
         "fields":[
            "_all",
            "DocumentationPage.title^6",
            "DocumentationPage.title^6"]
      }
   }
}

Но потом вообще не поднимается. В крайнем случае я мог бы использовать Оценка функции/сценария, но хотелось бы избежать этого.

Для примера предположим, что документ содержит только title поля.


person PeterM    schedule 23.01.2017    source источник


Ответы (1)


Простой способ добиться этого — переписать запрос в OP как dis-max запрос.

Пример для эластичного поиска 5.x:

 {
   "query": {
      "dis_max": {
         "queries": [
            {
               "simple_query_string": {
                  "fields": [
                     "_all"
                  ],
                  "query": "mangan"
               }
            },
            {
               "bool": {
                  "filter": {
                     "type": {
                        "value": "DocumentationPage"
                     }
                  },
                  "must": [
                     {
                        "simple_query_string": {
                           "fields": [
                              "title^6"
                           ],
                           "query": "mangan"
                        }
                     }
                  ]
               }
            }
         ]
      }
   }
}
person keety    schedule 23.01.2017
comment
Спасибо, работает как положено! Похоже, что этот метод также может быть полезен при фильтрации документов разных типов по разным условиям. - person PeterM; 24.01.2017