ElasticSearch: с учетом документа и запроса, какова оценка релевантности? - PullRequest
1 голос
/ 20 апреля 2020

После выполнения запроса в ElasticSearch релевантность _score рассчитывается для каждого полученного документа. Учитывая конкретный c документ (например, с помощью do c ID) и конкретный c запрос, я хотел бы посмотреть, каков его _score?

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

Я предполагаю, что должен быть более эффективный способ сделать это. Учитывая запрос и идентификатор документа, каков его _score?

Я использую ElasticSearch 7.x

PS: мне это нужно для сценария обучения рангу (для создания моего списка рассуждений). На самом деле у меня сложный запрос, который был создан из различных should и must по разным полям. Моим основным требованием было , чтобы получить значение оценки для каждого отдельного подзапроса , что, похоже, для этого не существует решения. Я хочу понять, какая часть этого сложного запроса более полезна, а какая меньше. Единственный способ, которым я придумал, - это выполнить каждый подзапрос отдельно, чтобы получить оценку, но я не хочу на самом деле выполнять этот запрос, просто спрашивая, какова оценка указанного c документа для этого подзапроса. .

1 Ответ

3 голосов
/ 20 апреля 2020

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

  1. _score рассчитывается на основе шарда, а не по умолчанию на индексной основе, хотя вы можете изменить это поведение, используя DFS Query Then Fetch param в своем запросе. Больше информации на этом официальном блоге .
  2. Есть ли какое-либо усиление, примененное во время индекса или запроса ( время индекса устарело с 5.X ).
  3. Любая пользовательская функция оценки используется в дополнение к стандартному алгоритму оценки ES ( tf / idf в старых версиях ) и BM25 в последних версиях.

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

Чтобы ответить на ваш вопрос, используя _explain API, вы может понять, как Elasticsearch вычисляет объяснение оценки для запроса и конкретного документа c. Это может дать полезную информацию о том, соответствует ли документ или не соответствует указанному c запросу.

...