Имена тегов Acts_as_taggable_on как атрибуты Thinking Sphinx - PullRequest
0 голосов
/ 14 января 2012

Моя модель индексируется с помощью Thinking Sphinx, и я хочу отфильтровать результаты поиска по тегам модели, предоставляемым act_as_taggable_on. Я прочитал этот предыдущий вопрос , который позволил моим поискам использовать :conditions => { :tags => 'Comedy' } в качестве фильтрующего запроса.

Это не универсальное решение, так как по умолчанию весь текст ищется в индексированных полях Sphinx. Например, при поиске Model.search :conditions => { :tags => "Comedy" } также отображаются результаты с тегом Black Comedy. Я вижу, что использование атрибутов вместо полей является решением, но я не могу получить правильные результаты при поиске Model.search :with => { :tags => "Comedy" }, и мой блок define_index выглядит следующим образом:

define_index
   indexes title, :sortable => true
   has category_tags(:name), :as => :tags
end

Обратите внимание, что я опираюсь на предыдущий ответ, представленный в вопросе, связанном выше. Ответчик детализирует индексирование тегов внутри контекста - поэтому причина метода category_tags.

1 Ответ

3 голосов
/ 14 января 2012

Измените свой индекс на:

define_index
  indexes title, :sortable => true
  has "CRC32(category_tags.name)", :as => :tags, :type => integer
end

Примечание: category_tags.name ссылается на ваше_имя_таблицы.column_name

И ищите тег после преобразования в int:

Model.search :with => {:tags =>'Comedy'.to_crc32}

См. Общие вопросы для получения дополнительной информации: http://freelancing -god.github.com / ts / en / common_issues.html

...