Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取AWS Cloudsearch上的上一个光标_Php_Amazon Web Services_Amazon Cloudsearch - Fatal编程技术网

Php 获取AWS Cloudsearch上的上一个光标

Php 获取AWS Cloudsearch上的上一个光标,php,amazon-web-services,amazon-cloudsearch,Php,Amazon Web Services,Amazon Cloudsearch,我正在搜索我们的网站,有成千上万的用户访问。我喜欢CloudSearch,因为它超级快速,减轻了我RDS的负担。我们有大约30000个文档,所以为了给结果分页,我需要使用游标。文件不断更新(添加、修改或删除)。我现在的问题是获取上一个游标 我的理想情况是 {Prev}{…}{3}{4}{5}{6}{7}{…}{Next} 但我注意到这很难做到,因为我无法在每次执行查询时获取所有游标。所以我想做点什么 {Prev}{Next} 我是通过将当前游标&下一个游标传递给AJAX脚本来加载新结果的。当用户

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

我的理想情况是

{Prev}{…}{3}{4}{5}{6}{7}{…}{Next}

但我注意到这很难做到,因为我无法在每次执行查询时获取所有游标。所以我想做点什么

{Prev}{Next}

我是通过将当前游标&下一个游标传递给AJAX脚本来加载新结果的。当用户只是向前移动并进入下一页时,这一点非常有效。当用户返回并检索上一页时,它会中断。它们可以返回一页到当前(上一页)光标,但不能返回超过一页。这在用户看来是荒谬的

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

例如:

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

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


非常感谢大家

您可以使用“开始”和“大小”参数而不是“游标”:这允许您随机访问结果。但是CloudSearch将整个集合中的结果限制为10000个

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

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