2015-04-29 2 views
3

У меня есть модель Foo с атрибутом с именем listed.rails sunspot не возвращает правильные результаты

Теперь я бегу просто пятно (Solr) запрос

foos = Foo.search do 
     with :listed, true 
end.results 

Это возвращает все FOOS, которые имеют listed = true, за исключением двух из них.

Я уже пробовал следующее:

Sunspot.remove_all 
Foo.solr_index 
Sunspot.commit 
Foo.all.each(&:index!) 

Любая помощь будет высоко оценен.

+0

Просто чтобы добавить к нему. перечисленные уже определены как поле поиска в модели. –

ответ

0

Вы должны инициализировать для поиска в модели Foo

class Foo < ActiveRecord::Base 

    searchable do 
    boolean :listed 
    end 
end 

затем индексировать Solr

bundle exec rake sunspot:reindex 

или

Foo.reindex 
Sunspot.commit 
+0

Спасибо. Конечно, поданная уже отмечена как доступная для поиска. :) –

0

В моем случае, я использовал драгоценный камень под названием ' act_as_paranoid ', так что после удаления объекта я могу восстановить его , После того, как объект был уничтожен, он остается в состоянии «удалено» limbo навсегда, если я не вызову команду для ее окончательного удаления. Это была моя проблема. Solr Sunspot по-прежнему имеет индексы этих удаленных элементов, но не смог получить их.

Что я сделал:

  • навсегда удалить все элементы в подвешенном
  • переиндексации все объекты принадлежат к этой модели

Voila! Все возвращается правильно.

Я был вчера, и было еще лучше, когда комбинация встроенной разбивки на страницы, но это еще одна история.

Надежда ваша похожа.

Смежные вопросы