Вернуть результаты поиска Elasticsearch в порядке расположения?

В настоящее время я использую функцию подсветки, которую предлагает Flexiblesearch в своем запросе. Однако, одна вещь, которую я не совсем понимаю, это то, как упорядочены результаты. Я бы предпочел, чтобы они вернулись в order that they appear в пункте вместо важности / оценки. Это так, я могу объединить их с ...в том же порядке, что и в оригинальном документе (аналогично результатам Google). Тем не менее, они в настоящее время возвращаются в некотором взвешенном порядке на основе лучшего соответствия?

Есть ли способ сделать это, не выполняя дополнительную постобработку на поле после просмотра результатов выделения?

Я вижу, что есть "order" : "score" вариант для выделения, но нет никаких других документированных вариантов для изменения порядка возврата. (И кроме того, я не понимаю разницу между порядком по умолчанию и порядком начисления очков).

Вот фрагмент выделенной части моего запроса.

  "highlight": {
    "fields": {
      "synopsis": {
        "fragment_size": 150,
        "number_of_fragments": 4
      }
    }
  }

1 ответ

Решение

Итак, немного поиграв, я обнаружил, что fast-vector-highlighter отсортирует фрагменты по порядку их появления в исходном документе. Чтобы включить это, мне нужно было добавить "term_vector" : "with_positions_offsets" к моему синопсису сопоставления полей.

{
  "properties" : {
    "synopsis" : {
      "type" : "string",
      "term_vector": "with_positions_offsets"
    }
  }
}

а затем используйте мой основной запрос так:

{
  "query": {
    "match": {
      "synopsis": "foo"
    }
  },
  "highlight": {
    "fields": {
      "synopsis": {
        "type": "fvh",
        "fragment_size": 150,
        "number_of_fragments": 4
      }
    }
  }
}

ПРИМЕЧАНИЕ. Использование "order" : "score" приведет к тому, что порядок будет следовать схеме оценки, которая не обязательно соответствует порядку смещения начальной позиции. Я полагаю, что точный код для этого компаратора можно найти здесь, который, кажется, основывает его на усилении фрагмента, а затем на его начальном смещении.

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