Я не реализовал функцию поиска прежде и чувствую себя немного застрявшим. У меня есть функция поиска Солнечного пятна, которая находит результаты на основе ключевых слов - это работает отлично - но я теперь хочу реализовать много избранную фасетную опцию, но я, может даже казаться, не выясняю, как установить основной фасетный поиск.
У меня есть многие многим отношения (в направляющих не в реальной жизни):
Люди класса has_many: навыки: через => опыт (и наоборот и т.д.)
Class People < ActiveRecord::Base
has_many :skills, :through => experience
searchable do
text :first_name, :surname
end
end
В контроллере
@search = Sunspot.search(People)
facet :skill_ids
end
Это - основной пример, я не могу получить работу. Это генерирует эту ошибку:
Sunspot::UnrecognizedFieldError: No field configured for People with name 'skill_ids'
Как делают я создаю ссылку на: skill_ids
Я думаю, что должен пропускать некоторую ссылку в модели - но никакие примеры, которые я могу найти, действительно не ссылаются на Ids отношений. Большинство примеров я нашел столбцы использования, которые уже находятся в той модели при использовании фасетной функциональности.
Спасибо за Ваше время!
Sunspot должен знать обо всем, что вы хотите отфильтровать, фасетировать или упорядочить. Итак, в вашей модели:
searchable do
text :first_name, :surname
integer :skill_ids, :multiple => true, :references => Skill
end
Ваш вызов #search в вашем контроллере выглядит правильно. На ваш взгляд, вы должны сделать что-то в этом роде:
- @search.facet(:skill_ids).rows.each do |row|
= row.instance.name
row.instance
вернет экземпляр Skill, на который ссылается значение строки (это то, что делает параметр : ссылки
в определение с возможностью поиска
).
Я не совсем понимаю, что вы имеете в виду под «выбрать несколько фасетов для поиска» - можно сгенерировать несколько фасетов (которые дают пользователям выбор для дальнейшего уточнения поиска), вызвав фасет
метод несколько раз в поиске; и затем вы можете использовать их варианты фасетов с ограничениями области видимости, используя метод with
, который вы также можете вызывать сколько угодно раз.
Говоря о вики, большая часть этой информации доступна (с дополнительными пояснениями) в вики Sunspot: