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

Pencarian Teks Lengkap PostgreSQL dan Kebingungan Trigram

Mereka melayani tujuan yang sangat berbeda.

  • Pencarian Teks Lengkap digunakan untuk mengembalikan dokumen yang cocok dengan kueri penelusuran kata-kata bertangkai.
  • Trigram memberi Anda metode untuk membandingkan dua string dan menentukan seberapa mirip mereka.

Perhatikan contoh berikut:

SELECT 'cat' % 'cats'; --true

Di atas mengembalikan true karena 'cat' sangat mirip dengan 'cats' (seperti yang ditentukan oleh batas pg_trgm).

SELECT 'there is a cat with a dog' % 'cats'; --false

Di atas mengembalikan false karena % sedang mencari kesamaan antara dua string keseluruhan, tidak mencari kata cats dalam string.

SELECT to_tsvector('there is a cat with a dog') @@ to_tsquery('cats'); --true

Ini mengembalikan true karena tsvector mengubah string menjadi daftar kata bertangkai dan mengabaikan sekelompok kata umum (kata henti - seperti 'is' &'a')... kemudian mencari versi bertangkai cats .

Sepertinya Anda ingin menggunakan trigram untuk koreksi otomatis ts_query . Anda tapi itu tidak benar-benar mungkin (toh tidak dengan cara yang efisien). Mereka tidak benar-benar tahu sebuah kata salah eja, betapa miripnya dengan kata lain. Mereka bisa digunakan untuk mencari tabel kata untuk mencoba dan menemukan kata yang serupa, memungkinkan Anda untuk menerapkan fitur jenis "apa maksud Anda...", tetapi kata ini memerlukan pemeliharaan tabel terpisah yang berisi semua kata yang digunakan dalam pencarian search lapangan.

Jika Anda memiliki beberapa kata/frasa yang sering salah eja yang ingin dicocokkan dengan indeks teks, Anda mungkin ingin melihat Kamus Sinonim




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perintah COPY Postgresql memberikan Izin ditolak kesalahan

  2. Cara menjatuhkan beberapa tabel di PostgreSQL menggunakan wildcard

  3. Contoh Tabel dan Metode Lain untuk Mendapatkan Tuple Acak

  4. Apakah ada cara untuk memuat data teks ke database di PostgreSQL?

  5. Db berbeda untuk pengujian di Django?