Rails + Thinking Sphinx: условие поиска по массиву - PullRequest
0 голосов
/ 23 июня 2011

Я ищу способ сделать следующее.На самом деле, я ищу некоторые статьи и при запуске поиска я даю в качестве параметра массив, то есть `params [: Categories] = [" 1 "," 4 "," 5 "," 8 "]

Теперь, когда я выполняю поиск с thinkSphinx `, я делаю следующее

#article.rb
def self.adv_search(query, categories)
    Article.search(
      query, 
      :with => {:category =>  },
    )
end

и запускаю поиск как

adv_search(params[:q], params[:categories])

, но продолжаю получать пустой массив результатов.Кто-нибудь знает, как TS управлять массивами?

1 Ответ

3 голосов
/ 24 июня 2011

Если категория - это атрибут, представляющий собой целое число или совокупность целых чисел (в соответствии с вашим примером), то единственное, что вам нужно сделать, это убедиться, что вы вводите массив целых чисел, а не строк, в фильтр:

Article.search query, :with => {:category => categories.collect(&:to_i)}

Имейте в виду, что это вернет все статьи с любой из этих категорий. Если категория была набором целых чисел, и вы хотели, чтобы статьи имели все из этих категорий, тогда вы должны использовать :with_all вместо :with.

...