/ / Tokenisierte Textsuche mit Rails über Felder mit Blick auf die Leistung - Ruby-on-Rails, Activerecord, Heroku, Volltextsuche

Rails Tokenized Textsuche über Felder mit Leistung im Kopf - Ruby-on-Rails, ActiveRecord, Heroku, Volltextsuche

Ich habe eine Rails-App auf Heroku, auf die ich freueErhöhen Sie die Benutzerfreundlichkeit der Suche nach. Zu diesem Zweck möchte ich ihnen die Textsuche über mehrere Felder in mehreren Modellen durch Assoziationen ermöglichen. Die Eingabe des Benutzers kann eine Mischung aus Text aus einem dieser Felder sein (und kann sich häufig über mehrere Felder erstrecken) bestellen.

Beispiel: Wenn Sie eine Fahrzeugdatenbank haben und dem Benutzer die Suche nach "Honda Fit 2011" ermöglichen möchten, wobei "Honda" aus der Herstellertabelle stammt, "Fit" aus der Modelltabelle stammt und "2011" aus der Tabelle model_year stammt.

Ich denke, dass ich ein einzelnes Feld bauen mussim Stammdatensatz, der die eindeutige Liste der Wörter aus jedem dieser Felder enthält, und dann die Benutzereingaben mit einem Token versehen IN Klausel, die ich mir nicht sicher bin, könnte von Volltextsuch-Plugins wie pg_search.

Meine Frage ist also, was ist ein guter Weg, um eine Suche wie diese in Rails zu aktivieren?

Antworten:

0 für die Antwort № 1

Ich würde mir Sunspot_rails ansehen. Es verwendet Solr als Suchmaschine, ermöglicht Ihnen jedoch das Indizieren von Inhalten auf vielfältige Weise. Zum Beispiel habe ich Modelle ganz einfach mit ihren Assoziationen indiziert:

searchable do
text :description
text :category do
category.present? ? category.name : ""
end
end

Sie können dann suchen mit:

TYPES = [Asset,Product]

Sunspot.search(*TYPES) do |q|
q.fulltext search_str
end