Ich verwende das Juwel pg_search in einer Rails-App, um nach Benutzern zu suchen - nach ihrem Bios und dem zugehörigen Skill-Modell. Benutzer sind Entwickler, so dass ihre Fähigkeiten Dinge wie "CSS" schließen "C++", "C#", "Objective C", etc ...Übereinstimmende Sonderzeichen (z. B. #, +) mit pg_search
ich zunächst das den folgenden Suchbereich verwendet wurde:
pg_search_scope :search,
against: [:bio],
using: {tsearch: {dictionary: "english", prefix: true}},
associated_against: {user: [:fname, :lname], skills: :name}
Wenn Sie jedoch in diesem Fall "C++" suchen, erhalten Sie unter anderem Ergebnisse, die "CSS" enthalten. Ich änderte den Umfang den „einfachen“ Wörterbuch zu verwenden und prefixing entfernt:
pg_search_scope :search_without_prefix,
against: [:bio],
using: {tsearch: {dictionary: "simple"}},
associated_against: {user: [:fname, :lname], skills: :name}
Diese festen einige Dinge - zum Beispiel der Suche „C++“ nicht „CSS“. Aber, Suche "C++" oder "C#" entspricht immer noch Benutzer, die "C" oder "Objective C" aufgeführt haben
Ich kann auf jeden Fall eine grundlegende ILIKE
übereinstimmen, aber hoffe, dies mit pg_search zu erreichen, wenn möglich.