PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Pencarian teks lengkap PG di rel menggunakan permata pg_search untuk substring

Saya penulis dan pengelola pg_search.

Sayangnya, tsearch PostgreSQL secara default tidak membagi alamat email dan memungkinkan Anda untuk mencocokkan dengan bagian-bagiannya. Mungkin berhasil jika Anda mengaktifkan :trigram cari, karena cocok dengan sub-string arbitrer yang muncul di mana saja dalam teks yang dapat dicari.

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

Saya mengkonfirmasi ini dengan menjalankan perintah berikut di psql:

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

Saya tahu bahwa parser mendeteksi alamat email, jadi saya pikir itu mungkin. Tapi itu akan melibatkan pembuatan kamus penelusuran teks di PostgreSQL yang akan membagi alamat email menjadi token dengan benar.

Berikut adalah bukti bahwa pengurai pencarian teks mengetahui bahwa itu adalah alamat email:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. regexp_split_to_table dan row_number

  2. Menempatkan output dari Postgres \i input ke file?

  3. SQL pilih elemen di mana jumlah bidang kurang dari N

  4. Pernyataan yang Disiapkan Sudah Ada

  5. Seledri dan transaksi.atomic