2016-10-04 5 views
3

Я новичок в Azure службы поиска, и я не уверен, что я получил одну важную вещь об этом:Pagination после переиндексации в Azure Поиск

Давайте представим ситуацию, когда я, как клиент прокрутки вниз по результатам моих поисков запрос:

"New Y". У меня 1000 элементов, каждая страница содержит 10 из них. Но во время моей прокрутки операция reindex была запущена, и некоторые элементы изменили свою позицию относительно новых обновлений в источнике данных (Azure Table).

Я буду видеть следующие страницы во время моей прокрутки после переиндекса, возможно, с некоторыми дублируемыми данными, или это все-таки старый «снимок» данных, которые я прокрутил раньше?

ответ

1

Вы будете видеть изменения при выполнении последующих запросов. Для Azure Поиск каждого запроса является независимым и представляет собой новый поиск (кэширование в стороне), который для сценариев подкачки просто имеет другой «пропущенный» номер.

Это означает, что если ваши данные изменяются, вы можете увидеть элемент более одного раза (если он перемещается по страницам из-за изменений) или даже пропустить один (если он перемещается со страницы, которую вы еще не видите на странице вы уже видели).

Невозможно получить строго согласованный вид совпадений поиска за пределами одного результата. Если вам нужно приблизиться к этому поведению, вы можете запросить более крупную страницу (используя «верх»), кешировать результаты и представлять их в кусках. Мы обнаруживаем, что на практике это редко необходимо для большинства сценариев поиска, но если поиск поддерживает часть приложения, которое требует согласованности, вам может понадобиться что-то в этом направлении.

+0

Похоже, что это плохой дизайн веб-API. Я имею в виду подкачки данных с параметрами $ top/$ skip, которые всегда будут вызывать проблемы с дублирующимися элементами. Подобная проблема решается на основе курсора. Вот хорошая статья об этом http://vermorel.com/journal/2015/5/8/nearly-all-web-apis-get-paging-wrong.html. Интересно, почему Azure Search по-прежнему не обеспечивает надежного способа «подкачки». – ebashmakov