Солнечное пятно, индексация solr, ассоциации

Я пытаюсь настроить поиск по модели, которая имеет много разных ассоциаций. Я начну с ассоциаций принадлежности_к. Я могу успешно выполнить поиск в поле имени модели продукта, но когда я выполняю поиск того, что будет в связанных моделях, я просто получаю результаты по умолчанию.

Что я делаю неправильно?

Любая помощь приветствуется.

#Product Model
Class Product < ActiveRecord::Base

  searchable do
    text :name

    integer :store_id, :references => Store.name

    text :store do
      Store.all.map { |store| store.name }
    end
  end
end 


#product controler
def search 
    @search = Sunspot.search(Product) do
      fulltext params[:search] do
        fields(:name, :store)
      end
    end

    @products = @search.results
end

#Store Model
searchable do
  text :name
end

person isea    schedule 01.05.2014    source источник
comment
Дизайн предмета? Почему? Почему не Sunspot.search(Product) или Product.search?   -  person Ruby Racer    schedule 02.05.2014
comment
Извини за это. На самом деле это Продукт. я отредактировал это   -  person isea    schedule 02.05.2014


Ответы (1)


Class Product < ActiveRecord::Base
    belongs_to :store

    searchable do
        text :name
        index :store do
            index :name
        end
        integer :store_id # do you really need this? I think not.
    end
end

Не забывайте переиндексировать после каждого изменения в ваших моделях.

EDIT: вам не нужно индексировать класс Store сам по себе, если только вы не планируете выполнять поиск по нему.

person Ruby Racer    schedule 01.05.2014
comment
Сделал бы я это в классе продукта? - person isea; 02.05.2014
comment
да. Все, что вам нужно сделать, это изменить одну строку, в которой вы сопоставляете значения. Вы назначаете всю таблицу Stores каждому продукту... Это неправильно. product has_many :магазины, не все... - person Ruby Racer; 02.05.2014
comment
Хорошо, когда я делаю это и переиндексирую, я получаю длинную ошибку в консоли. Где-то там написано NoMethodError: неопределенный метод «сохраняет» для #‹Class:0x007f9bcd785f08›. Это сбивает с толку, потому что определенно существует ассоциация own_to с :store - person isea; 02.05.2014
comment
Извините, подождите, какие у вас отношения? продукт имеет_много:магазинов или продукт принадлежит_кому:магазин? - person Ruby Racer; 02.05.2014
comment
продукт принадлежит_магазину - person isea; 02.05.2014
comment
Тогда мой ответ неверен, и мне нужно его отредактировать. Подождите один момент и проверьте его. - person Ruby Racer; 02.05.2014
comment
Хорошо, я получаю NoMethodError: undefined method `name' for nil:NilClass, когда я это делаю. - person isea; 02.05.2014
comment
Хорошо.. Попробуйте мое последнее отредактированное предложение, и после этого я сдамся и удалю комментарий, если он не сработает... Извините за беспокойство... - person Ruby Racer; 02.05.2014
comment
неважно, в БД есть пара пустых полей хранилища. Спасибо за вашу помощь - person isea; 02.05.2014
comment
Во-первых, никаких проблем! Я полностью ценю помощь. Однако последнее редактирование не сработало. Он снова выдал длинную ошибку. Я думаю, что моя проблема заключается в нулевых объектах. Мне нужно выяснить, как справиться с этим сейчас - person isea; 02.05.2014
comment
Хорошо, взгляните на это: github.com/sunspot/sunspot/wiki /Sunspot-2.0-README - person Ruby Racer; 02.05.2014