The Missing Catalog Record Problem
A museum search interface displays the first twenty approved pottery objects, then loads another page as a visitor scrolls. Between requests, a catalog editor adds a description and another document changes its relevance score. The second query repeats one object and appears to omit another. Visitors may think a record vanished, while the interface simply assumed the order of ranked results was a permanent numbered list.
Pagination needs its own correctness rules. For a hypothetical catalog, preserve a stable object identifier, the effective filter, sort specification and the request state for each page. Distinguish a browsed list of records from a full archival export. The purpose is to detect duplicates and gaps without pretending that live search results can never change between requests.
Understand top, skip and Continuation
Azure AI Search supports top and skip for client-side result paging. The Search Documents REST reference documents a maximum skip of 100,000. When results are truncated by server-side paging, the service supplies continuation information that the client can use to request the next part. These mechanisms solve different problems: skip selects an offset in a result set, whereas continuation follows the next segment of a response.
Use the actual continuation parameters returned by the service instead of guessing the next offset from the number of visible cards. A query asking for ten results might be served differently from a query enumerating a much larger set. Save only the state required for the next authorized request. Never treat a continuation token as an unrestricted bearer capability or an instruction to bypass the original filter.

Keep Access Filters and Sort Keys Together
A catalog usually has statuses such as approved, restricted, embargoed and withdrawn. Apply the user’s authorization and document visibility filters before paging results, not after the display has already received them. Store the filter expression and index revision or relevant snapshot metadata with the page cursor in application state. If the user’s role changes, invalidate the cursor and start a fresh authorized search.
For browsing by accession code, prefer a deterministic order with a unique tie-breaker. Sort by a date alone and two objects sharing that date can move between pages. For relevance-ranked searches, explain that results may change as scoring or index content changes. Do not promise perfect snapshot consistency from a paging parameter when the search index is being updated concurrently.
Treat Large Exports Differently From Browsing
Microsoft’s REST documentation states that skip cannot exceed 100,000 and points to using a totally ordered key together with an ordered filter for sequential scans beyond that bound. A staff export should therefore use a deliberate traversal strategy that records the last processed unique key and resumes safely. This is distinct from giving a visitor an endless stream of relevance-ranked pages.
An export should store its own run ID, access scope, count of distinct catalog keys and a checkpoint log. Avoid repeatedly appending pages to a destination without verifying which keys were previously written. If a request times out after returning data to the server, reconcile the destination before retrying; otherwise an archive import can double-count records even though each individual search response was valid.

Visualize Three Page States
A practical diagram shows page one with objects AC-101, AC-102 and AC-103, a faulty second page that repeats AC-103, and a corrected continuation path with AC-104, AC-105 and AC-106. Illustrative identifiers are used on purpose; the art does not claim the Azure service was tested. The visible difference is the set of unique IDs, not a decorative checkmark beside two identical lists.
Add a second teaching case for sorting: if two artifacts share the same acquisition year, a sort on year alone is insufficient to guarantee repeatable placement. Add the unique catalog key as a tie-breaker where supported. If the application provides a message that results have changed, phrase it clearly instead of suggesting an interrupted session is somehow a confirmed complete inventory.

Build Defensive Client-Side State
Maintain a set of IDs already displayed for duplicate detection, but do not rely on that as the only paging mechanism. Deduplicating cards on screen hides the symptom; it does not recover a genuinely skipped document. Record request parameters, continuation data, returned IDs, error status and the timestamp of the response in minimal diagnostic logs without patron personal data.
Have a safe recovery path when continuation fails or a filter changes. Restart from a fresh first page, show that the list was refreshed and avoid merging stale page two with new page one. If the service returns a partial failure or the network drops, do not label the current list “all records.” Make clear when the visitor is seeing a subset of authorized search results.
Release a Verified Browsing Experience
Test with invented catalog identifiers, tied sort values, a revoked document, an inserted record during scrolling, a server-truncated response and a simulated retry. For each case compare the pages’ ID sets and the expected permission scope. These are proposed test cases, not executed performance measurements. Verify the behavior on the exact API version and client SDK being deployed.
The final acceptance gate should check stable IDs, secure filters, continuation handling, duplicate and gap diagnostics, a refresh path and separation between browse and export workflows. Azure pagination helps present results incrementally, but it does not grant access or guarantee that a mutable index is a fixed snapshot. The application remains responsible for honest completeness labels and safe recovery.
How We Research
We consulted the following official developer documentation on November 8, 2026: Microsoft Learn: Search Documents REST API; Microsoft Learn: Search pagination and result shaping; Microsoft Learn: OData filters. We compared the documented parameters, data flow and stated limitations with this hypothetical editorial scenario. The diagrams are original instructional illustrations, not real vendor screenshots or outputs. We did not submit private archive material, run a production API evaluation, measure tool accuracy, obtain legal consent, or test a live service configuration. Product behavior, access rules, quotas and supported settings may change; confirm the latest documentation and your organization’s policies before deployment.
Frequently Asked Questions
The Search Documents REST reference documents a maximum skip value of 100,000. Large sequential scans need a different traversal strategy.
No. Continuation is returned for additional server-side result pages; top and skip are separate client paging parameters.
No. If the index or relevance ranking changes between requests, results may shift. Design a refresh and reconciliation path.
No. Enforce access filters in the authorized query and underlying application before results reach the interface.
No. All identifiers are fictional examples that illustrate duplicates and missing IDs.
