Ich habe Sphinx und Thinking-Sphinx vor ein paar Tagen auf meinem Rubin auf Schienen 2.3.2 installiert, und grundlegende Suche funktioniert großartig. Dies bedeutet, ohne Bedingungen. Jetzt möchte ich die Suche mit einigen Bedingungen filtern.Sphinx - Wann 'has' und 'indexes' für Felder zu verwenden ist
Ich habe die Ankündigung Modell, und der Index sieht wie folgt aus:
define_index do
indexes title, :as => :title, :sortable => true
indexes description, :as => :description, :sortable => true
end
Vielleicht bin ich falsch, aber ich merkte, dass nur dann, wenn ich die :sortable => true
Syntax dieser Attribute hinzugefügt, ich könnte sie als Bedingungen bei meiner Suche. Sonst wird es nichts finden.
Jetzt benutze ich auch acts_as_taggable_on Plugin, das meine zwei db-Tabellen generiert: Tags und Tags. Ich habe kein Modell für Tags, ich habe nur acts_as_taggable_on :tags, :categories
bei meinem Ankündigungsmodell.
Was ich jetzt tun möchte, ist nach Tags zu filtern. Also habe ich versucht, zu meinem Index has tags(:id), :as => :tag_ids
ohne Glück hinzuzufügen, und auch indexes tags(:id), :as => :tag_ids
, aber es hat auch nicht funktioniert.
Wie kann ich bauen die Indizes so dass ich etwas tun kann:
Announcement.search 'some word', :conditions => {:tag_ids => some_id}
Und auch, was der Unterschied zwischen has
und indexes
Dank ist, Brian
Vielen Dank! Ich werde es versuchen. –
Ich weiß nicht warum, aber es funktioniert nicht. Wie ich schon sagte, ich habe kein Tag-Modell, ich benutze nur das acts_as_taggable_on-Plugin. Ist es möglich, dass das Problem das Problem verursacht? –
Ich meine, ich habe kein Feld "Tags" in der Ankündigungs-Tabelle. Das Plugin erzeugt zwei Tabellen: Tags und Tags. Also, die Beziehung zwischen den Ankündigungen und Tags ist durch Tagging-Tabelle. Hat es etwas damit zu tun? –