Приложение Rails не получает изменения schema.xml в рабочей среде
Мы запускаем приложение Rails на Heroku, используя дополнение Websolr с Sidekiq для постановки в очередь заданий индексации. Это работало в течение долгого времени, но теперь мы настроили 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 с помощью вкладки конфигурации на их сайте - Развернут код Rails, который использует новые поля Solr
- Перезапустил рабочий Heroku, запустив Sidekiq, масштабировав его до 0, а затем снова сделав резервную копию
Когда я пытаюсь проиндексировать Profile
в производстве задание индексирования завершается с этой ошибкой:
RSolr::Error::Http - 400 Bad Request Error: 'ERROR: [doc=Profile 1] unknown field \'name_substr\'','code'=>400
Когда я сталкиваюсь с подобными вещами в процессе разработки, перезапуск Sidekiq, а также Solr исправляет это; Я перезапустил все, что я мог в производстве, хотя, не заставляя это работать.
Очевидным признаком является то, что рабочая панель управления Sidekiq сообщает, что время ее работы составляет 123 дня, несмотря на перезапуск рабочего Heroku. Я искал документацию, но не могу найти способ перезапустить Sidekiq. Если кто-нибудь знает, что происходит, то я очень признателен за помощь:)
1 ответ
Поддержка Websolr здесь! Этот фрагмент выглядит хорошо для меня. Обратите внимание, что обновление schema.xml через панель мониторинга Websolr автоматически развернет изменения в Solr и перезагрузит ядро (я), поэтому нет необходимости перезапускать что-либо. Чтобы начать использовать новое поле, достаточно поднять изменения в приложении Rails.
Похоже, все, что вы сделали, должно работать. Не возражаете, отправив письмо по электронной почте в службу поддержки -at- websolr.com с вашим индексным URL? Мы посмотрим и убедимся, что больше ничего не происходит.