sql >> Database >  >> RDS >> PostgreSQL

PG zoeken in volledige tekst op rails met behulp van pg_search gem voor substring

Ik ben de auteur en onderhouder van pg_search.

Helaas splitst PostgreSQL's tsearch standaard geen e-mailadressen op, zodat u onderdelen kunt vergelijken. Het zou kunnen werken als je :trigram . hebt ingeschakeld zoek echter, omdat het overeenkomt met willekeurige subtekenreeksen die overal in de doorzoekbare tekst voorkomen.

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

Ik heb dit bevestigd door het volgende commando in psql uit te voeren:

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

Ik weet dat de parser e-mailadressen detecteert, dus ik denk dat het mogelijk moet zijn. Maar het zou gaan om het bouwen van een woordenboek voor tekstzoeken in PostgreSQL die het e-mailadres correct zou opsplitsen in tokens.

Hier is bewijs dat de tekstzoek-parser weet dat het een e-mailadres is:

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



  1. De beperking van bulk-inserts via een databaselink overwinnen

  2. Wat is de echte waarde van het introduceren van Microsoft Access in uw organisatie?

  3. Gebruik wp_query na het wijzigen van de database via nieuwe wpdb

  4. Een nauwkeurige uitvoeringstijd van een MySQL-instructie verkrijgen