gpt4 book ai didi

Solr 光标标记和分页

转载 作者:行者123 更新时间:2023-12-05 04:13:23 26 4
gpt4 key购买 nike

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

据我了解,如果您使用基本分页并以每页 20 个结果查询第 1001 页,将会发生这种情况:

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

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

我还没有看到一个合适的大数字深度分页的例子。只有少数,所以我不确定。有人可以澄清一下吗?

下面的例子是否正确?

.../query?q=id:book*&sort=pubyear_i+desc,id+asc&fl=title_t,pubyear_i&rows=1&cursorMark=*

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

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

或者我是否应该让第一个查询包含 20000 行,获取 nextCursorMark,然后将它用于另一个只有 20 行的查询?

我发现运行一些 20000 行的查询只是为了获得 nextCursorMark 有点奇怪。这是正确的做法吗?

如果,例如,您有 10 个页面,用户想从第 1 页点击第 5 页,我是否需要手动浏览每个页面才能到达那里?

编辑:

我读过这个:How to manage "paging" with Solr?

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

试图找到一个工作示例但找不到。

最佳答案

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

如果您只是在寻找“第 1001 页上的第一个结果是什么”,第一个版本就可以正常工作。如果您对结果进行分页 - 用户可能会或可能不会转到下一页,使用 cursorMarks 的要点是每个节点(或在单个节点设置中)知道哪个文档是最后显示的文档,因此,对于每个节点,只能返回从当前位置开始的 个文档。如果您执行第一个版本,每个节点都必须返回 start + rows 文档。因此,您无需尝试找出“哪些文档是 20001 之后的十个”,您只需回答“哪些文档是此排序键之后的下十个”。

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

参见 the reference guide for complete examples和进一步的描述。

关于Solr 光标标记和分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37790694/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com