Как я настраиваю фасетный поиск со многими многим отношения с помощью Солнечного пятна?

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

У меня есть многие многим отношения (в направляющих не в реальной жизни):

Люди класса 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 отношений. Большинство примеров я нашел столбцы использования, которые уже находятся в той модели при использовании фасетной функциональности.

  • Как я могу получить работу базового внедрения?
  • Как я использовал бы это в представлении - я должен назвать hits.facet и выполнить итерации по навыкам? На что код был бы похож для отображения этого?
  • Как я выбрал бы несколько фасетов для поиска?
  • Я должен поместить это в общественную Wiki?

Спасибо за Ваше время!

9
задан the-undefined 26 March 2010 в 09:43
поделиться

1 ответ

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:

14
ответ дан 4 December 2019 в 14:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: