Проблема со сфинксом в Ruby 1.9.3?

Недавно я перенес веб-приложение с ruby ​​1.8.7 на 1.9.3, и все идет отлично, за исключением поиска. Все работало нормально, пока не наткнулся на рубин. Вот мой код контроллера:

ids = Business.simple_search_for_ids_with_location(@term, @city, @state, {}, :per_page => 2500)
      @results = Business.paginate :conditions => { :id => ids }, :page => ActionController::Base.helpers.sanitize(params[:page]), :include => [:category]
      @results = @results.sort{|a,b| a.name.downcase <=> b.name.downcase}
      @count = @results.total_entries

И из моей модели:

def self.simple_search_for_ids_with_location(term, city, state, conditions={}, options={})
  ids = Business.compact_search_for_ids(term, {:conditions => { :address_city => city, :address_state => state }.merge(conditions), :order => :business_name}.merge(options))
  if state.blank?
    by_state = Business.compact_search_for_ids(term, {:conditions => { :address_state => city }.merge(conditions), :order => :business_name}.merge(options))
    ids += by_state
  end
  ids
end

def self.compact_search_for_ids(*args)
  search_for_ids(*args).compact
end

При запуске в браузере получаю undefined method total_entries for []:Array

И оскорбительная строка @count = @results.total_entries

Я убедился, что sphinx установлен, а Think_sphinx проиндексирован и работает.

Вроде все работает, но возвращается пустой массив? Почему раньше это работало нормально?

Я ценю любую помощь, которую я могу здесь получить, так как я действительно не хочу возвращаться к ruby ​​​​1.8.7. Спасибо.


person shorepound    schedule 23.01.2018    source источник
comment
измените total_entries на количество или длину...   -  person Brad Werth    schedule 23.01.2018
comment
Я сделал это, и это нормально, это устраняет «ошибку». Однако мне интересно, почему мои результаты не приходят. Если я запускаю >> ids = Business.simple_search_for_ids_with_location('surf', 'atlantic beach', 'fl', {}, :per_page => 2500) в консоли, я получаю пустой массив. Я точно знаю, что есть компании, которые соответствуют этим критериям поиска.   -  person shorepound    schedule 23.01.2018
comment
Какую версию Thinking Sphinx вы используете и какую версию вы использовали в 1.8.7? Кроме того, можете ли вы поделиться определением индекса Sphinx для вашей бизнес-модели?   -  person pat    schedule 24.01.2018
comment
Использование 1.4.11 теперь использовало 1.4 с ruby ​​​​1.8.7, вот индекс: /c7eefb49a75761324406e0e574b81b47   -  person shorepound    schedule 24.01.2018
comment
Я обновил риддл с 1.3.3 до 1.5 и теперь получаю ошибку: ThinkingSphinx::SphinxError: index business_core: sort-by attribute 'business_name_sort' not found   -  person shorepound    schedule 24.01.2018
comment
С обновленной загадкой вы можете запустить rake ts:rebuild и посмотреть, поможет ли это в поиске?   -  person pat    schedule 25.01.2018
comment
rake ts:rebuild прерванное выполнение истекло. @pat Я благодарю вас за помощь.   -  person shorepound    schedule 25.01.2018
comment
Вот трассировка gist.github.com/shorepound/c66b1a14a6c56a87053f8adad5c97434 еще раз @pat Я очень благодарен за ваша помощь.   -  person shorepound    schedule 25.01.2018
comment
Я убил pid для searchd и успешно запустил ts:rebuild, к сожалению, та же ошибка.   -  person shorepound    schedule 25.01.2018
comment
Иногда вам нужно удалить каталог приложения /db/sphinx перед запуском перестроения (я не думаю, что вы должны это делать, но у меня это работало в прошлом).   -  person Brad Werth    schedule 25.01.2018
comment
Не повезло, но спасибо @BradWerth   -  person shorepound    schedule 25.01.2018
comment
Судя по всему, вы используете самую последнюю версию Sphinx. Я не уверен, что версии TS/Riddle, которые вы используете, будут поддерживать это - вам может потребоваться перейти на более раннюю версию (я бы начал с версии 2.0.x Sphinx, чтобы посмотреть, поможет ли это?). Кроме того, можете ли вы поделиться результатами рабочего цикла восстановления? И, наконец: теперь постоянная ошибка business_name_sort не найдена?   -  person pat    schedule 25.01.2018
comment
О, и, учитывая, что эта ветка комментариев становится довольно длинной — вы можете открыть проблему в репозитории TS, если это проще: github.com/pat/thinking-sphinx   -  person pat    schedule 25.01.2018
comment
@pat вот результат перестроения: gist.github.com/shorepound/3d1d3289f9c1bb2ecfd5f9b32d8b35a8 И да, ошибка это: ThinkingSphinx::SphinxError (index business_core: sort-by attribute 'business_name_sort' not found)   -  person shorepound    schedule 25.01.2018
comment
Привет, @pat, я заварил деинсталлятор sphinx, скачал 2.0.6 и установил, теперь все работает. Еще раз спасибо, я очень ценю это.   -  person shorepound    schedule 25.01.2018


Ответы (1)


Решение было найдено в ходе обсуждения в комментариях выше. Пара мыслей, которые могут помочь тем, кто сталкивается с подобными проблемами:

  • Если вы используете Thinking Sphinx v1.x или 2.x, лучше придерживаться старых версий Sphinx. Рекомендуется не выше Sphinx v2.0.x.
  • Убедитесь, что вы запускаете rake ts:rebuild при обновлении Thinking Sphinx и, конечно же, при обновлении самого Sphinx (формат его индексов часто меняется между младшими выпусками).
  • Если вы можете перейти на более поздние версии Ruby/Rails/Thinking Sphinx, это всегда поможет при долгосрочном обслуживании (но, по понятным причинам, не всегда возможно).
person pat    schedule 26.01.2018