#azure #azure-cognitive-search
#azure #azure-когнитивный поиск
Вопрос:
Я новичок в службе поиска Azure, и я не уверен, что понял одну важную вещь об этом:
Давайте представим ситуацию, когда я, как клиент, просматриваю результаты своего поискового запроса:
«Новый Y». У меня 1000 элементов, каждая страница содержит 10 из них. Но во время моей прокрутки была запущена операция переиндексации, и некоторые элементы изменили свое положение относительно новых обновлений в источнике данных (Azure Table).
Увижу ли я следующие страницы во время прокрутки после переиндексации, возможно, с некоторыми дублированными данными, или это все еще будет старый «снимок» данных, которые я прокручивал раньше?
Ответ №1:
Вы увидите изменения при выполнении последующих запросов. Для Azure Search каждый запрос независим и представляет собой новый поиск (без учета кэширования), который для сценариев подкачки страниц просто имеет другой номер «пропуска».
Это означает, что если ваши данные меняются, вы можете увидеть элемент более одного раза (если он перемещается по страницам из-за изменений) или даже пропустить один (если он перемещается со страницы, которую вы еще не видели, на страницу, которую вы уже видели).
Невозможно получить строго согласованное представление поисковых совпадений за пределами одного результата. Если вам нужно приблизиться к этому поведению, вы можете запросить страницу большего размера (используя «top»), кэшировать результаты и представлять их в виде фрагментов. Мы обнаружили, что на практике это редко требуется для большинства сценариев поиска, но если поиск поддерживает часть приложения, которая нуждается в согласованности, вам может понадобиться что-то в этом роде.
Комментарии:
1. Похоже, это плохой дизайн веб-API. Я имею в виду, что данные подкачки с параметрами $ top / $ skip всегда будут вызывать проблемы с дублирующимися элементами. Разбивка на страницы на основе курсора решает такую проблему. Вот хорошая статья об этом vermorel.com/journal/2015/5/8 /. … Интересно, почему Azure Search по-прежнему не предоставляет надежного способа «подкачки».