gpt4 book ai didi

ruby-on-rails - 仅当可搜索字段发生变化时才使用太阳黑子索引

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

我们在最新项目中使用 sunspot 进行搜索。我们还使用 devise 并按如下方式为我们的用户模型编制索引:

searchable do
text :fname
text :lname
text :email
text :description
text :twitter_username
end

使用此设置,除非 solr 正在运行,否则用户甚至无法登录。这意味着在每次保存用户模型时,都会与我们的 solr 服务器进行一些通信(重建索引?),即使可搜索字段都没有更改。这是正确的吗?

我们还有许多其他模型正在被 sunspot 索引,这些模型具有经常更新的不可搜索字段。似乎 sunspot 正在为所有这些更新重新编制索引。

有没有办法将 sunspot 配置为仅在可搜索字段发生变化时与 solr 交互?

最佳答案

我假设您拥有最新版本的 sunspot gem。

  1. 每次模型更改时,Sunspot 都会重新编制索引。要调整此行为(请参阅 options for searchable ):

    searchable :ignore_attribute_changes_of => [ :average_rating, :permalink ] 做 文本:标题 结束

    查看源码:https://github.com/outoftime/sunspot/blob/master/sunspot_rails/lib/sunspot/rails/searchable.rb

  2. 您的站点在第一次请求 solr 之前应该仍然可以工作:

    • 全文搜索请求

    • 索引请求

    您可能会在每次用户登录时对用户模型进行更新,因此会触发重建索引。

更多提示:

  • 其实花很多时间的不是索引,而是commit命令;默认情况下,commit 命令在每个 Web 请求结束时发出;这在生产环境中非常昂贵。我建议你 change the policyautocommit after X seconds ;

  • 如果你想要修补 sunspot 以便你的站点在 solr 服务器出现故障时正常工作,我建议你看一下这个 gem,它模拟了测试环境的服务器接口(interface):sunspot_matchers

关于ruby-on-rails - 仅当可搜索字段发生变化时才使用太阳黑子索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6040493/

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