Ich bin der Autor und Betreuer von pg_search.
Leider teilt die tsearch von PostgreSQL standardmäßig keine E-Mail-Adressen auf und ermöglicht Ihnen den Abgleich mit Teilen. Es könnte funktionieren, wenn Sie :trigram
aktiviert haben search, da es mit beliebigen Teilstrings übereinstimmt, die irgendwo im durchsuchbaren Text erscheinen.
pg_search_scope :search_by_detail,
:against => [
[:first_name,'A'],
[:last_name,'B'],
[:email,'C']
],
:using => {
:tsearch => {:prefix => true},
:trigram => {}
}
Ich habe dies bestätigt, indem ich den folgenden Befehl in psql ausgeführt habe:
grant=# SELECT plainto_tsquery('example.com') @@ to_tsvector('english', '[email protected]');
?column?
----------
f
(1 row)
Ich weiß, dass der Parser E-Mail-Adressen erkennt, also denke ich, dass es möglich sein muss. Aber es würde den Aufbau eines Textsuchwörterbuchs erfordern in PostgreSQL, das die E-Mail-Adresse ordnungsgemäß in Token aufteilen würde.
Hier ist der Beweis, dass der Textsuche-Parser weiß, dass es sich um eine E-Mail-Adresse handelt:
grant=# SELECT ts_debug('english', '[email protected]');
ts_debug
-----------------------------------------------------------------------------
(email,"Email address",[email protected],{simple},simple,{[email protected]})
(1 row)