首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Solr光标标记和分页

Solr光标标记和分页
EN

Stack Overflow用户
提问于 2016-06-13 13:08:49
回答 1查看 5.6K关注 0票数 3

我想使用Solr作为我的网站作为搜索引擎,我试图了解基本分页和深度分页与光标标记之间的区别。

据我所知,如果您使用基本分页并使用每页20个结果查询页面1001,则会发生以下情况:

  • Solr会找到第一个1000*20的匹配结果。
  • 显示1001页的下20个结果

我想问题是当有人点击下一页的时候。Solr将首先找到1001*20的结果,然后显示所需的结果。

我还没有见过一个使用大量数据进行深度分页的适当示例。只有少量的数字,所以我对此不太确定。谁能澄清一下吗?

下面的示例正确吗?

代码语言:javascript
运行
复制
.../query?q=id:book*&sort=pubyear_i+desc,id+asc&fl=title_t,pubyear_i&rows=1&cursorMark=*

这给了我"nextCursorMark“:"AoJcfCVib29rMg==”

既然我有了nextCursorMark,我就可以去找到我想要的页面了。现在我应该手动浏览这些页面吗?我应该创建一个循环来搜索我想要的特定页面吗?

或者我应该有20000行的第一个查询,获取nextCursorMark,然后将它与另一个只有20行的查询一起使用?

我觉得只为获得nextCursorMark而运行20000行的查询有点奇怪。这是正确的方法吗?

如果你有10页,用户想从第1页点击第5页,我需要手动浏览每一页吗?

编辑:

我读过这样的文章:如何使用Solr管理分页?

这个:https://lucidworks.com/blog/2013/12/12/coming-soon-to-solr-efficient-cursor-based-iteration-of-large-result-sets/

试图找到一个有用的例子,但却找不到。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-13 13:26:54

cursorMark告诉Solr它应该在哪里启动下一个响应。它类似于第一个示例中的start参数。在对结果进行分页时,每个响应的cursorMark都会显示下一页的开始位置。

如果你只是在寻找“1001页上的第一个结果是什么”,第一个版本就会工作得很好。如果您正在对结果进行分页--如果用户可能或不可能进入下一页,那么使用cursorMarks的要点是,每个节点(或在单个节点设置中)都知道要显示的文档是哪个,因此只能从每个节点的当前位置返回rows数量的文档数。如果要执行第一个版本,每个节点都必须返回start + rows文档。因此,与其试图找出“哪一份文件是20001之后的10份文件”,你只需回答“哪份文件是这类密钥之后的下一份文件”。

此外,cursorMarks更好地处理结果集的更新,因为您避免了对结果集的任何更改,这些更改会将已经显示的文档推送回您要显示的下一页。

请参阅完整示例的参考指南和进一步的说明。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37790694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档