У меня есть таблица вложений, которая имеет несколько значений (через полиморфный ассоциатив). Я хотел бы иметь возможность искать несколько значений (например, AND в SQL) с помощью мышления-sphinx.поиск нескольких полиморфных элементов с использованием мышления sphinx
Например:
class FieldValue < ActiveRecord::Base
belongs_to :customized, :polymorphic => true
end
class Attachment < ActiveRecord::Base
has_many :field_values, :as => :customized, :dependent => :destroy
define_index do
has field_values.field_id, :as => :field_ids, :type => :multi
indexes field_values.value, :as => :field_values, :type => :multi
set_property :enable_star => 1
set_property :min_infix_len => 3
end
end
Моя FieldValue модель имеет одно поле (значение), поэтому, используя приведенное выше определение индекса, я мог бы сделать что-то вроде:
Attachment.search :conditions => { :field_values => ["*5100*", "1"] }, :with => { :field_ids => [23, 24] }
Но это не технически делай то, на что я надеюсь. В field_values должны соответствовать field_ids (по аналогии с select * from attachments where (field_value.id = 23 and field_value.value like '*5100*) and (field_value.id = 23 and field_value.value = '1')
(я знаю, там присоединяется отсутствует выше: P)
Можно ли сделать запрос, аналогичный этому
Раньше я использовал индексы на FieldValue для выполнения поиска, но мне показалось, что у меня получилось немного «взломать», поэтому надеялся, что существует «официальный» способ сделать это. Я в основном пытаюсь повторить что-то вроде: '' ' define_index делать индексов: value_one индексов: value_two индексов: value_three конца ' '' , но так как ассоциация полиморфных value_ [one..three] определяются как ключ/значение (как вы отметили выше). Я могу обойти это, используя стандартный файл Attachment.search, затем индивидуальные запросы FieldValue.search и объединить результаты, но это хак, который я хочу избежать: P –
Извините, попробовал отредактировать кучу раз, но забыл, что вы не можете реально комментарии формата: P –
Можно ли получить результаты отдельно и пересечь их? См. Этот вопрос: http://stackoverflow.com/questions/30305981/intersect-thinking-sphinx-results – Jonathan