Я установил Сфинкса и Интеллектуального Сфинкса несколько дней назад на моем рубине на направляющих 2.3.2, и основной поиск работает отлично. Это означает без любых условий. Теперь, я хочу отфильтровать поиск с некоторыми условиями.
У меня есть модель Announcement и индексные взгляды следующим образом:
define_index do
indexes title, :as => :title, :sortable => true
indexes description, :as => :description, :sortable => true
end
Возможно, я неправ, но я заметил, что только, когда я добавил :sortable => true
синтаксис к этим атрибутам, я мог использовать их в качестве условий в моем поиске. Иначе это ничего не найдет.
Теперь, я также использую acts_as_taggable_on плагин, который генерировал мои две таблицы базы данных: теги и маркировки. У меня нет модели для тегов, я просто имею acts_as_taggable_on :tags, :categories
в моей модели Announcements.
Что я хотел бы сделать, теперь должен отфильтровать тегами. Так, я пытался добавить к своему индексу has tags(:id), :as => :tag_ids
без удачи, и также indexes tags(:id), :as => :tag_ids
но это не работало также.
Как может я создавать индексы, таким образом, я могу сделать что-то вроде этого:
Announcement.search 'some word', :conditions => {:tag_ids => some_id}
И также, который является различным между has
и indexes
Спасибо, Brian
Позвольте мне ответить на ваши вопросы в обратном порядке. Индексирует все, что
ожидает, что строка, это то, что SPHINX будет искать текст, который вы предоставляете.
С другой стороны, имеет все
, не добавляет это содержимое на поля поиска. Он ожидает в первую очередь числа, потому что вы используете этот материал для сортировки и фильтрации после того, как SPHINX уже выполнил поиск.
Наконец, я считаю, что вы хотите имеет теги (: ID): as =>: tag_ids
в вашей модели, а : с => {: tag_ids => que_id}
В вашем поиде вместо использования : Условия
. Условия используются в текстовых полях, которые вы индексировали, как способ выполнения текстовых поисков на определенные поля вместо всех проиндексированных полей. Используется для фильтрации результатов, используя атрибуты, которые вы указали с , имеет все, что
.