gpt4 book ai didi

ruby-on-rails - Rails、Thinking_sphinx、Delta 索引

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

我正在使用 thinking_sphinx 并且正在对模型进行增量索引。

delta 索引有效,但有一个小错误。当我创建一个新产品时,它是 index.html 。但是,当我更新该产品时,它不会立即获得索引。我必须在旧的更新产品被索引之前更新或创建新产品。

不太确定从哪里开始。

最佳答案

我的建议是使用 delay_delta 索引而不是直接的 delta 索引(这可能很慢,如果你在几秒钟内有几次更新,可能会给你带来各种各样的问题)。

它需要两个步骤:

  • 更改您的 define_index阻止有一个 set_property :delta => :delayed
  • 创建一个简短的脚本以确保延迟的索引作业得到运行。这是我使用的:

  • #!/usr/bin/env ruby
    ## 这个脚本是为了确保和delayed_jobs 运行
    ##它被思考狮身人面像使用
    需要 File.dirname(__FILE__) + '/../config/environment'

    # 你也可以把它的定义放在 config/environments/*.rb 中,这样对于测试、生产和开发来说都是不同的
    JobRunnerPidFile = "#{RAILS_ROOT}/tmp/pids/job_runner.pid"

    如果 File.exists?(JobRunnerPidFile)
    old_pid = File.read(JobRunnerPidFile).to_i
    开始
    如果 Process.getpgid(old_pid) > 0
    # 还在运行,让我们静默退出...
    退出(0)
    结尾
    救援
    # 看起来什么都没有运行,所以让我们继续
    结尾
    结尾

    File.open(JobRunnerPidFile, "w") {|f| f. 写 "#{$$}\n"}

    延迟::Worker.new.start

    您可以每 5 分钟从 cron 运行该脚本(它只会运行一个实例),或者如果您有监控服务(例如, monit ),您可以确保它正在运行。

    确保在部署新版本代码时重新启动该脚本。

    关于ruby-on-rails - Rails、Thinking_sphinx、Delta 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2013412/

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