Можно ли использовать поиск Sphinx с динамическими условиями?
В моем веб-приложении мне нужно выполнить 3 типа поиска на items
таблица со следующими условиями:
items.is_public = 1
(использованиеtitle
поле для индексации) - можно получить много результатов (количество элементов намного выше, чем в других случаях)items.category_id = {X}
(использованиеtitle
+private_notes
поля для индексации) - обычно менее 100 результатовitems.user_id = {X}
(использованиеtitle
+private_notes
поля для индексации) - обычно менее 100 результатов
Я не могу найти способ заставить Sphinx работать во всех этих случаях, но он хорошо работает в 1-м случае. Должен ли я использовать Sphinx только для 1-го случая и использовать обычный старый "медленный" поиск FULLTEXT в MySQL(по крайней мере, из-за более низкой мощности в 2-3 случаях)?
Или это только я и Сфинкс можем делать практически все?
1 ответ
Без полного знания ваших моделей я мог бы что-то упустить, но как это:
class item < ActiveRecord::Base
define_index do
indexes :title
indexes :private_notes
has :is_public, :type => :boolean
has :category_id
has :user_id
end
end
1)
Item.search(:conditions => {:title => "blah"}, :with => {:is_public => true})
2)
Item.search("blah", :with => {:category_id => 1})
3)
Item.search("blah", :with => {:user_id => 196})