Jeg er forfatter og vedligeholder af pg_search.
Desværre opdeler PostgreSQL's tsearch som standard ikke e-mail-adresser og giver dig mulighed for at matche med dele. Det kan måske virke, hvis du har slået :trigram
til søg dog, da det matcher vilkårlige understrenge, der vises hvor som helst i den søgbare tekst.
pg_search_scope :search_by_detail,
:against => [
[:first_name,'A'],
[:last_name,'B'],
[:email,'C']
],
:using => {
:tsearch => {:prefix => true},
:trigram => {}
}
Jeg bekræftede dette ved at køre følgende kommando i psql:
grant=# SELECT plainto_tsquery('example.com') @@ to_tsvector('english', '[email protected]');
?column?
----------
f
(1 row)
Jeg ved, at parseren registrerer e-mailadresser, så jeg tror, det må være muligt. Men det ville involvere at bygge en tekstsøgningsordbog i PostgreSQL, der ville opdele e-mailadressen korrekt i tokens.
Her er bevis på, at tekstsøgningsparseren ved, at det er en e-mailadresse:
grant=# SELECT ts_debug('english', '[email protected]');
ts_debug
-----------------------------------------------------------------------------
(email,"Email address",[email protected],{simple},simple,{[email protected]})
(1 row)