我们正在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
当我尝试在生产中索引Profile
时,索引作业会因此错误而失败:
RSolr::Error::Http - 400 Bad Request Error: 'ERROR: [doc=Profile 1] unknown field \'name_substr\'','code'=>400
当我在开发中遇到这种情况时,重新启动Sidekiq以及Solr修复它;我已经重新启动了我在生产中所能做的一切,但没有让它工作。
一个明显的线索是生产Sidekiq仪表板表示它的正常运行时间为123天,尽管Heroku工作人员正在重新启动。我搜索了文档,但我找不到实际重新启动Sidekiq的任何方法。如果有人知道发生了什么,那么我真的很感激一些帮助:)
答案 0 :(得分:1)
Websolr支持!那个片段对我来说很好看。请注意,通过Websolr仪表板更新schema.xml将自动将更改部署到Solr并重新加载核心,因此无需重新启动任何内容。推送对Rails应用程序的更改应该足以开始使用新字段。
听起来你到目前为止所做的一切都应该有效。注意用你的索引URL拍一封电子邮件来支持-at- websolr.com?我们来看看,确保没有其他事情发生。