sql >> Databáze >  >> RDS >> PostgreSQL

PG fulltextové vyhledávání na kolejích pomocí gem pg_search pro podřetězec

Jsem autorem a správcem pg_search.

Bohužel tsearch PostgreSQL ve výchozím nastavení nerozděluje e-mailové adresy a neumožňuje vám porovnávat části. Mohlo by to fungovat, pokud jste zapnuli :trigram hledat, protože odpovídá libovolným podřetězcům, které se objevují kdekoli v prohledávaném textu.

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

Potvrdil jsem to spuštěním následujícího příkazu v psql:

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

Vím, že parser detekuje e-mailové adresy, takže si myslím, že to musí být možné. Zahrnovalo by to však vytvoření slovníku pro vyhledávání textu v PostgreSQL, který by správně rozdělil e-mailovou adresu na tokeny.

Zde je důkaz, že analyzátor textového vyhledávání ví, že se jedná o e-mailovou adresu:

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



  1. Architektura SQL Server AlwaysOn (skupina dostupnosti) a instalace krok za krokem -4 Přidání a odebrání databáze Kroky

  2. Více formulářů a jedna stránka zpracování

  3. Zjistěte nejoblíbenější slova v MySQL / PHP

  4. Při vkládání do MySQL přeskočit sloupec