sql >> Databasteknik >  >> RDS >> PostgreSQL

PG fulltextsökning på rails med pg_search gem för delsträng

Jag är författare och underhållare av pg_search.

Tyvärr delar PostgreSQL:s tsearch som standard inte upp e-postadresser och låter dig matcha mot delar. Det kan fungera om du aktiverar :trigram sök dock eftersom det matchar godtyckliga delsträngar som visas var som helst i den sökbara texten.

pg_search_scope :search_by_detail,
                :against => [
                  [:first_name,'A'],
                  [:last_name,'B'],
                  [:email,'C']
                ],
                :using => {
                  :tsearch => {:prefix => true},
                  :trigram => {}
                }

Jag bekräftade detta genom att köra följande kommando i psql:

grant=# SELECT plainto_tsquery('example.com') @@ to_tsvector('english', '[email protected]');
 ?column? 
----------
 f
(1 row)

Jag vet att parsern upptäcker e-postadresser, så jag tror att det måste vara möjligt. Men det skulle innebära att bygga en textsökordbok i PostgreSQL som korrekt skulle dela upp e-postadressen i tokens.

Här är bevis på att textsökningstolken vet att det är en e-postadress:

grant=# SELECT ts_debug('english', '[email protected]');
                                  ts_debug                                   
-----------------------------------------------------------------------------
 (email,"Email address",[email protected],{simple},simple,{[email protected]})
(1 row)



  1. ORA-01008:inte alla variabler bundna. De är bundna

  2. Att nå 2100 parametergränsen (SQL Server) när du använder Contains()

  3. Vad är skillnaden mellan =och :=i MySQL?

  4. MySQL-grupprader för att hitta tidsskillnad