gpt4 book ai didi

django - Haystack 和 Elasticsearch : Limit number of results

转载 作者:行者123 更新时间:2023-11-29 02:48:34 25 4
gpt4 key购买 nike

我有 2 个带有 Haystack 的服务器:

  • Server1:这已经安装了 elasticsearch
  • Server2:没有elasticsearch,查询到Server1

当我从 Server2 查询到 Server1 时,我的问题是关于分页:

  • Server2 查询Server1
  • Server1 将所有结果发送回Server2
  • Server2 进行分页

但这不是最优的,如果查询返回 10.000 个对象,查询会很慢。

我知道您可以向 elasticsearch 发送查询中的一些值(sizefromto),但我不知道如果使用 Haystack 可以做到这一点,我已经检查了文档并用谷歌搜索,但一无所获。

  • 如何在 Haystack 中配置查询以接收 10 乘 10 的结果?

编辑

  • 如果我制作 SearchQuerySet()[10000:10010] 是否可能只要求这 10 个项目?
  • 或者它会询问所有项目然后过滤它们?

编辑2

我在 Haystack 文档上找到了这个:

它似乎是一个函数来做我想做的事:

Restricts the query by altering either the start, end or both offsets.

然后我尝试做:

from haystack.query import SearchQuerySet

sqs = SearchQuerySet()
sqs.query.set_limits(low=0, high=4)
sqs.filter(content='anything')

结果是完整列表,就像我从未添加 set_limit 行一样

  • 为什么不工作?

最佳答案

Haystack 的工作方式与 Django ORM 有点不同。限制查询集后,您应该调用 get_results() 以获得有限的结果。这实际上很聪明,因为它避免了来自 Elastic 的多个请求。

例子:

# Assume you have 800 records.
sqs = SearchQuerySet()
sqs.query.set_limits(low=0, high=4)
len(sqs) # Will return 800 records
len(sqs.get_results()) # Will return first 4 records.

希望对您有所帮助。

关于django - Haystack 和 Elasticsearch : Limit number of results,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27777766/

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