Приложение 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? Мы посмотрим и убедимся, что больше ничего не происходит.

Другие вопросы по тегам