Можно ли найти определенную позицию документов в отсортированном поисковом индексе Azure? - PullRequest
0 голосов
/ 04 мая 2018

У нас есть несколько индексов поиска Azure, которые используют коллекцию Cosmos DB из 25 тыс. Документов в качестве источника, и каждый индекс имеет большое количество свойств документа, которые можно использовать для сортировки и фильтрации.

У нас есть требование разрешить пользователям сортировать и фильтровать документы, а затем выполнять поиск и переходить к определенной странице документов в разбивке по страницам.

Можно ли запросить индекс поиска Azure с помощью сортировки и фильтрации и получить позицию / ранг определенного идентификатора документа из набора результатов? Нужно ли искать альтернативный вариант? Я полагаю, что может быть способ сделать это с помощью серверной части SQL, но, очевидно, это будет серьезной задачей для реализации.

Мне еще предстоит найти способ сделать это, кроме написания запроса для разбивки на страницы, пока я не найду требуемый документ, который будет относительно дорогим и, возможно, медленным в плане обработки на сервере.

1 Ответ

0 голосов
/ 09 мая 2018

В Azure Search отсутствует механизм фильтрации в наборе результатов другого запроса. Вам придется пролистывать результаты, ища идентификатор документа на стороне клиента. Если ваши запросы не очень избирательны и дают много страниц результатов, это может быть медленным, так как $ skip фактически переоценивает все результаты вплоть до указанной страницы.

Вы можете использовать кэширование, чтобы сделать это быстрее. По крайней мере один клиент Azure Search использует Redis для кэширования результатов поиска. Если ваши запросы достаточно избирательны, вы можете даже кэшировать результаты в памяти, чтобы платить за пейджинг только один раз.

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