0Pricing
SQL Academy · Pelajaran

Pengantar Pencarian Teks Lengkap (tsvector, to_tsquery)

Indeks dokumen dengan tsvector, jalankan kueri bahasa alami dengan to_tsquery, dan urutkan hasil dengan ts_rank.

Pengantar Pencarian Teks Lengkap (tsvector, to_tsquery) adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.

Mengapa Pencarian Teks Lengkap?

LIKE/ILIKE menemukan substring. Pencarian teks lengkap (FTS) memahami kata: stemming, kata yang diabaikan, aturan bahasa, dan relevansi berperingkat. Sudah tersedia di PostgreSQL — tidak memerlukan ekstensi.

Dua Tipe Inti

FTS bertumpu pada dua tipe:

  • tsvector — dokumen yang telah diurai: leksem + posisi
  • tsquery — kueri yang telah diurai: leksem + operator boolean

Anda mencocokkannya dengan operator @@.

Mengurai Dokumen

Ubah teks mentah menjadi tsvector:

SELECT to_tsvector('english', 'The quick brown foxes jump over the lazy dogs');
-- 'brown':3 'dog':9 'fox':4 'jump':5 'lazi':8 'quick':2
-- Stop words ('the', 'over') dropped; words stemmed (foxes → fox)

Mengurai Kueri

Begitu pula dengan input pencarian:

SELECT to_tsquery('english', 'foxes & dogs');
-- 'fox' & 'dog'

Pencocokan

Gunakan @@ untuk menguji:

SELECT to_tsvector('english', 'The lazy fox')
        @@ to_tsquery('english', 'fox');    -- TRUE

Membuat Indeks pada Tabel Dokumen

Tambahkan kolom tsvector dan indeks GIN untuk kueri yang cepat:

CREATE TABLE articles (
  id BIGSERIAL PRIMARY KEY,
  title TEXT NOT NULL,
  body  TEXT NOT NULL
);

-- Either keep a generated tsvector column:
ALTER TABLE articles
  ADD COLUMN search_doc tsvector
    GENERATED ALWAYS AS (
      to_tsvector('english',
        coalesce(title,'') || ' ' || coalesce(body,'')
      )
    ) STORED;

CREATE INDEX articles_search_idx ON articles USING GIN (search_doc);

Pencarian

Dengan indeks tersebut, kueri berjalan cepat:

SELECT id, title
FROM articles
WHERE search_doc @@ to_tsquery('english', 'postgres & json')
ORDER BY id DESC;

Operator Boolean dalam Kueri

tsquery mendukung & (AND), | (OR), ! (NOT), dan pengelompokan:

to_tsquery('english', '(cat | dog) & !rabbit');

Pencarian Frasa

Gunakan <-> untuk kata-kata yang bersebelahan:

to_tsquery('english', 'postgres <-> performance');
-- finds 'postgres performance', not 'postgres is great for performance'

Kueri Web yang Ramah: websearch_to_tsquery

Terima kueri bergaya Google:

SELECT websearch_to_tsquery('english', 'postgres "json indexing" -mongo');

Mengurutkan Hasil Berdasarkan Relevansi

Beri peringkat dengan ts_rank atau ts_rank_cd:

SELECT id, title,
       ts_rank(search_doc, query) AS rank
FROM articles, to_tsquery('english', 'postgres & json') AS query
WHERE search_doc @@ query
ORDER BY rank DESC
LIMIT 20;

Menyoroti Hasil

Tampilkan cuplikan yang cocok:

SELECT ts_headline('english', body,
  to_tsquery('english', 'postgres & json'),
  'StartSel=<mark>,StopSel=</mark>')
FROM articles
WHERE search_doc @@ to_tsquery('english', 'postgres & json');

Ringkasan

FTS sudah tersedia di PostgreSQL.

  • tsvector + tsquery + @@
  • Indeks GIN untuk kecepatan
  • websearch_to_tsquery untuk input manusia
  • ts_rank untuk mengurutkan berdasarkan relevansi

Pemeriksaan Singkat

Operator mana yang mencocokkan tsvector dengan tsquery?

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pengantar Pencarian Teks Lengkap (tsvector, to_tsquery)” gratis?

Ya — teks lengkap “Pengantar Pencarian Teks Lengkap (tsvector, to_tsquery)” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pengantar Pencarian Teks Lengkap (tsvector, to_tsquery)”?

Indeks dokumen dengan tsvector, jalankan kueri bahasa alami dengan to_tsquery, dan urutkan hasil dengan ts_rank. Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai SQL Academy?

Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Pengantar Pencarian Teks Lengkap (tsvector, to_tsquery)” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?

Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Penggabungan Teks: || dan CONCAT
  2. UPPER, LOWER, SUBSTRING, REPLACE
  3. TRIM, LPAD, RPAD
  4. Pengantar Pencarian Teks Lengkap (tsvector, to_tsquery)
← Kembali ke SQL Academy