繁体   English   中英

在AWS Cloudsearch上获取上一个光标

[英]Get previous cursor on AWS Cloudsearch

我正在搜索我们的网站,成千上万的用户访问了该网站。 我喜欢CloudSearch,因为它超级快并且可以减轻RDS的负担。 我们大约有3万个文档,因此为了使结果分页,我需要使用游标。 文档不断更新(添加,修改或删除)。 我现在遇到的这个问题是获取上一个光标。

我理想的情况是

{上一页} {...} {3} {4} {5} {6} {7} {...} {下一页}

但是我注意到这很难做到,因为每次查询完成时我都无法获取所有游标。 所以我正在考虑做

{上一页} {下一页}

我这样做的方法是将当前光标和下一个光标传递给AJAX脚本以加载新结果。 当用户向前移动并获得下一页时,此功能非常理想。 当用户返回并检索上一页时,它会中断。 他们可以返回一页,直到当前(上一个)光标,但是不能返回超过一页。 对于用户而言,这是荒谬的。

我曾尝试存储游标,但是如果有新文档进入或删除了旧文档,它将再次中断。 我的光标将返回0个结果。 如果要获取新的游标,则只会看到下一个而不是前一个。

例:

第2页有光标??? 第3页有光标??? 第4页(当前页)具有光标VWXabc123第5页(下一页)具有光标VUTdef456

因此,问题是,如何在第4页之前获取以前的游标? 我无法存储结果或无法从查询中获取结果,这意味着我什至无法执行简单的“上一个”和“下一个”按钮。

非常感谢大家!

您可以使用“开始”和“大小”参数代替“光标”:这使您可以随机访问读取结果。 但是CloudSearch在整个集合中将您限制为10,000个结果。

为了让客户端对光标进行无限次“返回”,您需要对其进行跟踪。 如果只有一台应用服务器与他们对话并跟踪客户端会话,则可以将它们存储在您的应用服务器上,从而将prev / next和/或page =#与它们关联。

我们的应用程序有多个EC2服务器,因此我们无法在其中跟踪。 但是,我们可以让客户端存储它们在每个游标提供的页面之间移动时所使用的游标“堆栈”。 当他们返回时,将旧光标从堆栈中弹出,然后转到那里。 当他们前进时,将新光标添加到堆栈中。 我们将在客户的Angular代码中执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM