在 Azure 搜索中重建索引后分页
Pagination after reindex in Azure Search
我是 Azure 搜索服务的新手,我不确定我是否了解了一件重要的事情:
假设我作为客户向下滚动搜索查询结果的情况:
"New Y"。我有 1000 个元素,每页包含 10 个元素。但是在我的滚动重新索引操作已经开始并且一些元素改变了它们关于数据源中新更新的位置(Azure Table)。
我在重新索引后滚动时是否会看到下一页可能有一些重复的数据,或者它仍然是我之前滚动的旧 "snapshot" 数据?
您将在执行后续请求时看到更改。对于 Azure 搜索,每个请求都是独立的,它代表一个新的搜索(除了缓存),对于分页场景,它恰好有一个不同的 "skip" 数字。
这意味着,如果您的数据发生变化,您可能会不止一次看到一个项目(如果它因更改而跨页移动)甚至跳过一个(如果它从您尚未看到的页面移动到另一个您已经看过的页面)。
无法在单个结果之外获得严格一致的搜索匹配视图。如果您需要近似此行为,您可以请求更大的页面(使用 "top"),缓存结果并以块的形式呈现它们。我们发现在实践中,大多数搜索场景很少需要这样做,但如果搜索支持需要一致性的应用程序部分,您可能需要按照这些思路进行操作。
我是 Azure 搜索服务的新手,我不确定我是否了解了一件重要的事情:
假设我作为客户向下滚动搜索查询结果的情况:
"New Y"。我有 1000 个元素,每页包含 10 个元素。但是在我的滚动重新索引操作已经开始并且一些元素改变了它们关于数据源中新更新的位置(Azure Table)。
我在重新索引后滚动时是否会看到下一页可能有一些重复的数据,或者它仍然是我之前滚动的旧 "snapshot" 数据?
您将在执行后续请求时看到更改。对于 Azure 搜索,每个请求都是独立的,它代表一个新的搜索(除了缓存),对于分页场景,它恰好有一个不同的 "skip" 数字。
这意味着,如果您的数据发生变化,您可能会不止一次看到一个项目(如果它因更改而跨页移动)甚至跳过一个(如果它从您尚未看到的页面移动到另一个您已经看过的页面)。
无法在单个结果之外获得严格一致的搜索匹配视图。如果您需要近似此行为,您可以请求更大的页面(使用 "top"),缓存结果并以块的形式呈现它们。我们发现在实践中,大多数搜索场景很少需要这样做,但如果搜索支持需要一致性的应用程序部分,您可能需要按照这些思路进行操作。