Zainstalowałem Sphinx i Thinking-Sphinx kilka dni temu na moim ruby na szynach 2.3.2, a podstawowe wyszukiwanie działa świetnie. Oznacza to, bez żadnych warunków. Teraz chcę filtrować wyszukiwanie z pewnymi warunkami.Sfinks - Kiedy używać "has" i "indeksów" dla pól
mam model ogłoszenia, a indeks wygląda następująco:
define_index do
indexes title, :as => :title, :sortable => true
indexes description, :as => :description, :sortable => true
end
Może się mylę, ale zauważyłem, że tylko wtedy, gdy dodałem składnię :sortable => true
do tych atrybutów, można używać ich jako warunki w moich poszukiwaniach. W przeciwnym razie nic nie znajdzie.
Teraz używam również wtyczki acts_as_taggable_on, która wygenerowała moje dwie tabele db: tags i taggings. Nie mam modelu do tagów, po prostu mam acts_as_taggable_on :tags, :categories
w moim modelu Ogłoszenia.
Co chciałbym teraz zrobić, to filtrować według tagów. Tak więc próbowałem dodać do mojego indeksu has tags(:id), :as => :tag_ids
bez powodzenia, a także indexes tags(:id), :as => :tag_ids
, ale to też nie działało.
Jak mogę budować indeksy więc mogę zrobić coś takiego:
Announcement.search 'some word', :conditions => {:tag_ids => some_id}
a także, co jest różnica między has
i indexes
Dzięki Brian
Dziękuję bardzo! Spróbuję tego. –
Nie wiem dlaczego, ale to nie działa. Jak już wspomniałem, nie mam modelu Tag, używam tylko wtyczki acts_as_taggable_on. Czy to możliwe, że problem jest przyczyną problemu? –
To znaczy, nie mam pól "znaczników" w tabeli ogłoszeń. Wtyczka generuje dwie tabele: znaczniki i znaczniki. Relacja między zapowiedziami a tagami odbywa się poprzez tabelę tagów. Czy ma to coś wspólnego z tym? –