【问题标题】:Rails app not picking up schema.xml change in productionRails 应用程序未在生产中获取 schema.xml 更改
【发布时间】:2017-10-17 20:18:24
【问题描述】:

我们正在 Heroku 上运行 Rails 应用程序,使用带有 Sidekiq 的 Websolr 插件来对索引作业进行排队。这已经工作了很长时间,但现在我们调整了schema.xml 以改进子字符串匹配等。

修改后的 schema.xml 在本地和 CI 上运行,但生产 Rails 应用程序没有使用它。

这是新架构文件的相关部分:

<fieldType name="text_substr" class="solr.TextField" omitNorms="false">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="10"/>
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>
</fieldType>
<dynamicField name="*_substr" stored="false" type="text_substr" multiValued="true" indexed="true"/>

该字段用于索引模型的方式如下:

class Profile < ActiveRecord::Base
  searchable do
    text :name_similar_match, as: :name_substr do
      name
    end
  end
end

这是我到目前为止所做的:

  • 使用其网站上的配置选项卡将修改后的schema.xml 复制到 Websolr
  • 部署了使用新 Solr 字段的 Rails 代码
  • 重新启动运行 Sidekiq 的 Heroku 工作程序,方法是将其缩放为 0,然后再次备份

当我尝试在生产环境中索引 Profile 时,索引作业失败并出现以下错误:

RSolr::Error::Http - 400 Bad Request Error: 'ERROR: [doc=Profile 1] unknown field \'name_substr\'','code'=&gt;400

当我在开发中遇到这种事情时,重新启动 Sidekiq 以及 Solr 即可修复它;我已经在生产中重新启动了所有我能做的事情,但没有让它工作。

一个明显的线索是,生产 Sidekiq 仪表板显示其正常运行时间为 123 天,尽管 Heroku 工作器已重新启动。我已经搜索了文档,但我找不到任何实际上重新启动 Sidekiq 的方法。如果有人知道发生了什么,那么我真的很感激一些帮助:)

【问题讨论】:

    标签: ruby-on-rails heroku sidekiq sunspot websolr


    【解决方案1】:

    Websolr 支持在这里!那个 sn-p 对我来说看起来不错。请注意,通过 Websolr 仪表板更新 schema.xml 将自动将更改部署到 Solr 并重新加载核心,因此无需重新启动任何内容。将更改推送到 Rails 应用程序应该足以开始使用新字段。

    听起来您到目前为止所做的一切都应该有效。介意使用您的索引 URL 发送电子邮件以支持 -at-websolr.com 吗?我们会看看并确保没有其他事情发生。

    【讨论】:

    • 您能找出问题所在吗?我今天面临同样的问题。
    猜你喜欢
    • 1970-01-01
    • 2010-12-29
    • 2013-03-14
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多