Поиск Azure - хотите, чтобы случайный набор результатов

Я пытаюсь заменить кластер ElasticSearch на службу поиска Azure, в основном из-за проблем с хостингом / мониторингом инфраструктуры. Пока что дела идут неплохо, но один из сценариев, которые мне нужно учитывать, - это получение 10 случайных результатов для запроса. В ElasticSearch мы просто использовали функцию RandomScore из библиотеки Nest, которая была достаточно хорошей.

Я немного читал о профилях оценки, но это, кажется, не соответствует тому, что мне нужно, так как в нем нет функции Random ScoringAggregationFunction.

Есть ли что-то, что мне не хватает, как это сделать изначально?

1 ответ

К сожалению, в Azure Search невозможно получить случайно отсортированные результаты. Пожалуйста, запросите эту функцию в нашем UserVoice, чтобы помочь нам расставить приоритеты: https://feedback.azure.com/forums/263029-azure-search

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

Пробую это сейчас. Я использую двухэтапный процесс:

  1. Создайте свой запрос, но установите $count=true а также $top=0. Результат запроса должен содержать поле с именем @odata.count.
  2. Затем вы можете случайным образом выбрать int от 0 до @ odata.count, затем использовать $top=1 а также $skip=<random number>чтобы вернуть одну случайную запись. Есть одно предостережение: $skip принимает только числа меньше 100000.
Другие вопросы по тегам