Как написать запрос эластичного поиска, который соответствует термину и сортирует по порядку

Я пытаюсь написать запрос в asticsearch:

  1. Который ломает запрос и ищет каждое слово
  2. Поиск в нескольких полях, который соответствует большинству терминов.
  3. Это не увеличивает оценки релевантности, если поле содержит одно и то же слово, повторенное несколько раз.
  4. Для набора результатов он сортирует результат в порядке убывания времени.

Например, для четырех названий изображений ниже:

1. pic cat spa created_at  1.month.ago
2. pic car crash created_at  2.months.ago
3. pic sumo wrestler created_at 3.months.ago
4. pic car car crash created_at  5.months.ago

Результат должен быть:

1. A search for `car` should show 2. and then 4. 
2. A search for `pic` should show 1. 2. 3. 4 
3. A search for `pic spa cat` should show 1.

Запрос, который я написал, был:

GET /my_pics/_search
{ 
  "sort" : [
    "_score",
    {"created" : "desc"}
  ],
  "explain": true,
  "query": {
    "bool": {
      "must": {
        "multi_match": {
                  "query": "hello",
                  "fields": ["title", "description"],
                  "type": "cross_fields"
                 }
              }
            }
}
}

Но это дает более высокую актуальность к картинке с повторяющимся словом из запроса. Так что если в запросе "pic" или "car" повторяется несколько раз, это дает более высокий балл. Я не хочу этого Я хочу, чтобы он находил картинки с большинством слов запроса, не выдвигал релевантность, если одно слово повторяется несколько раз, но сужал результаты, когда добавлялось больше соответствующего запроса. В любом случае порядок созданного по убыванию сохраняется.

0 ответов

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