Можно ли использовать поиск Sphinx с динамическими условиями? - PullRequest
1 голос
/ 19 мая 2010

В моем веб-приложении мне нужно выполнить 3 типа поиска по таблице items со следующими условиями:

  1. items.is_public = 1 (используйте поле title для индексации) -можно получить много результатов (количество элементов намного выше, чем в других случаях)

  2. items.category_id = {X} (для индексирования используйте поля title + private_notes) - обычно менее 100результаты

  3. items.user_id = {X} (используйте title + private_notes поля для индексации) - обычно менее 100 результатов

Я могу 'Не могу найти способ заставить Sphinx работать во всех этих случаях, но он хорошо работает в первом случае.Должен ли я использовать Sphinx только для 1-го случая и использовать обычный старый «медленный» поиск FULLTEXT в MySQL (по крайней мере, из-за более низкой мощности в 2-3 случаях)?

Или это только я и Sphinx могут делать довольномного всего?

1 Ответ

1 голос
/ 19 мая 2010

Без полного знания ваших моделей я мог бы что-то упустить, но как это:

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})
...