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

Bagaimana cara SQL meminta kata-kata dengan tanda baca di Postgresql?

tsvektor

Gunakan tsvector type, yang merupakan bagian dari fitur pencarian teks PostgreSQL.

postgres> select 'What are Q-type Operations?'::tsvector;
              tsvector               
-------------------------------------
 'Operations?' 'Q-type' 'What' 'are'
(1 row)

Anda juga dapat menggunakan operator yang sudah dikenal di tsvectors:

postgres> select 'What are Q-type Operations?'::tsvector
postgres>        || 'A.B.C''s of Coding'::tsvector;
                           ?column?                           
--------------------------------------------------------------
 'A.B.C''s' 'Coding' 'Operations?' 'Q-type' 'What' 'are' 'of'

Dari dokumentasi tsvector:

Jika Anda juga ingin melakukan normalisasi khusus bahasa, seperti menghapus kata umum ('the', 'a', dll) dan mengalikan, gunakan to_tsvector fungsi. Ini juga memberikan bobot pada kata yang berbeda untuk pencarian teks:

postgres> select to_tsvector('english',
postgres> 'What are Q-type Operations? A.B.C''s of Coding');
                      to_tsvector                       
--------------------------------------------------------
 'a.b.c':7 'code':10 'oper':6 'q':4 'q-type':3 'type':5
(1 row)

Penelusuran teks lengkap

Jelas melakukan ini untuk setiap baris dalam kueri akan mahal -- jadi Anda harus menyimpan tsvector di kolom terpisah dan menggunakan ts_query() untuk mencarinya. Ini juga memungkinkan Anda membuat indeks GiST di tsvector.

postgres> insert into text (phrase, tsvec)
postgres>   values('What are Q-type Operations?',
postgres>   to_tsvector('english', 'What are Q-type Operations?'));
INSERT 0 1

Pencarian dilakukan menggunakan tsquery dan operator @@:

postgres> select phrase from text where tsvec @@ to_tsquery('q-type');
           phrase            
-----------------------------
 What are Q-type Operations?
(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. Tampilkan Anak Terakhir dalam Iterasi Bereaksi

  2. Pangkas spasi tambahan dengan PostgreSQL

  3. Google Cloud SQL - Penyimpanan Postgresql terus bertambah

  4. Keluarkan atau ekstrak stempel waktu dari v1 UUID di PostgreSQL

  5. Mengapa fungsi PL/pgSQL memiliki efek samping, sedangkan fungsi SQL tidak?