gpt4 book ai didi

ruby-on-rails - Rails 分页 - 总页数更快?

转载 作者:数据小太阳 更新时间:2023-10-29 08:43:03 24 4
gpt4 key购买 nike

我正在使用 Kaminari gem 对我的搜索进行分页:

@outfits = Outfit.where("description LIKE ?", "%warm%").page(params[:page]).per(20)

并使用此代码来决定是否显示更多内容:

<% unless @outfits.current_page == @outfits.total_pages %>
<p id="view-more">
<%= link_to('View More', url_for(page: @outfits.current_page + 1), remote: true) %>
</p>
<% end %>

问题是,比较当前页面是否是最后一页在加载时间方面是昂贵的。我的数据库中有数百万套服装,因此 activerecord 计数时间平均超过 600 毫秒:

   (616.9ms)  SELECT COUNT(*) FROM "outfits" WHERE (desc LIKE '%warm%') 

我该怎么做才能加快速度?

最佳答案

简短的回答不是真的。如果您要根据用户输入运行 LIKE 查询,您将不得不以任何一种方式对它们进行计数,以便判断用户是否在最后一页。

您可以利用 elasticsearch-rails 等文本搜索引擎显着加快搜索速度。 https://github.com/elastic/elasticsearch-rails .设置它需要一些开销,但如果您有数百万条记录,可能值得弄清楚。

如果您可以启动并运行它,您可以从索引中获取结果计数,与使用 LIKE 查询访问 Postgres 相比,这应该快如闪电。

关于ruby-on-rails - Rails 分页 - 总页数更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46285270/

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