SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

Memulai Pencarian Teks Lengkap SQLite

Ringkasan :dalam tutorial ini, Anda akan mempelajari cara menggunakan fitur pencarian teks lengkap SQLite dengan menggunakan modul tabel virtual FTS5.

Pengantar pencarian teks lengkap SQLite

Tabel virtual adalah ekstensi khusus untuk SQLite. Meja virtual seperti meja biasa. Perbedaan antara tabel virtual dan tabel normal adalah dari mana data berasal, yaitu ketika Anda memproses tabel normal, SQLite mengakses file database untuk mengambil data. Namun, saat Anda mengakses tabel virtual, SQLite memanggil kode kustom untuk mendapatkan data. Kode kustom dapat memiliki logika tertentu untuk menangani tugas tertentu seperti mendapatkan data dari berbagai sumber data.

Untuk menggunakan pencarian teks lengkap di SQLite, Anda menggunakan modul tabel virtual FTS5.

Berikut CREATE VIRTUAL TABLE pernyataan membuat tabel FTS5 dengan dua kolom:

CREATE VIRTUAL TABLE table_name 
USING FTS5(column1,column2...);
Code language: SQL (Structured Query Language) (sql)

Perhatikan bahwa Anda tidak dapat menambahkan jenis, batasan, atau PRIMARY KEY deklarasi di CREATE VIRTUAL TABLE pernyataan untuk membuat tabel FTS5. Jika Anda melakukannya, SQLite akan mengeluarkan kesalahan.

Seperti membuat tabel normal tanpa menentukan kolom kunci utama, SQLite menambahkan rowid implicit implisit kolom ke tabel FTS5.

Contoh berikut membuat tabel FTS5 bernama posts dengan dua kolom title dan body .

CREATE VIRTUAL TABLE posts 
USING FTS5(title, body);
Code language: SQL (Structured Query Language) (sql)

Mirip dengan tabel biasa, Anda dapat memasukkan data ke dalam posts tabel sebagai berikut:

INSERT INTO posts(title,body)
VALUES('Learn SQlite FTS5','This tutorial teaches you how to perform full-text search in SQLite using FTS5'),
('Advanced SQlite Full-text Search','Show you some advanced techniques in SQLite full-text searching'),
('SQLite Tutorial','Help you learn SQLite quickly and effectively');
Code language: SQL (Structured Query Language) (sql)

Dan data kueri yang menentangnya:

SELECT * FROM posts;
Code language: SQL (Structured Query Language) (sql)

Meminta data menggunakan penelusuran teks lengkap

Anda dapat menjalankan kueri teks lengkap terhadap tabel FTS5 menggunakan salah satu dari tiga cara berikut.

Pertama, gunakan MATCH operator dalam klausa WHERE dari pernyataan SELECT. Misalnya, untuk mendapatkan semua baris yang memiliki istilah fts5 , Anda menggunakan kueri berikut:

SELECT * 
FROM posts 
WHERE posts MATCH 'fts5';
Code language: SQL (Structured Query Language) (sql)

Kedua, gunakan yang sama (= ) di operator WHERE klausa dari SELECT penyataan. Pernyataan berikut mengembalikan hasil yang sama dengan pernyataan di atas:

SELECT * 
FROM posts 
WHERE posts = 'fts5';
Code language: SQL (Structured Query Language) (sql)

Ketiga, gunakan sintaks fungsi nilai-tabel. Dengan cara ini, Anda menggunakan istilah penelusuran sebagai argumen tabel pertama:

SELECT * 
FROM posts('fts5');
Code language: SQL (Structured Query Language) (sql)

Secara default, FTS5 adalah case-independen. Ini memperlakukan istilah fts5 FTS5 dan Fts5 sama.

Untuk mengurutkan hasil pencarian dari yang paling relevan hingga yang paling tidak relevan, Anda menggunakan klausa ORDER BY sebagai berikut:

SELECT * 
FROM posts 
WHERE posts MATCH 'text' 
ORDER BY rank;
Code language: SQL (Structured Query Language) (sql)

Menggunakan sintaks kueri teks lengkap

Kueri pencarian teks lengkap terdiri dari frasa, di mana setiap frasa adalah daftar berurutan dari satu atau lebih token. Anda dapat menggunakan operator “+” untuk menggabungkan dua frasa seperti contoh berikut:

"learn SQLite"
"learn + SQLite"
Code language: SQL (Structured Query Language) (sql)

FTS5 menentukan apakah dokumen cocok dengan frasa jika dokumen tersebut berisi setidaknya satu suburutan token yang cocok dengan urutan token yang digunakan untuk menyusun frasa.

Kueri berikut mengembalikan semua dokumen yang cocok dengan istilah pencarian Learn SQLite :

SELECT * 
FROM posts 
WHERE posts MATCH 'learn SQLite';
Code language: SQL (Structured Query Language) (sql)

Penelusuran awalan

Anda dapat menggunakan tanda bintang (*) sebagai token awalan. Jika frasa berisi tanda bintang (*), frasa tersebut akan cocok dengan dokumen apa pun yang berisi token yang dimulai dengan frasa tersebut. Misalnya, pencarian* cocok dengan pencarian, pencarian, pencarian, dll. Lihat contoh berikut:

SELECT * 
FROM posts
WHERE posts = 'search*';Code language: SQL (Structured Query Language) (sql)

Operator Boolean

Anda dapat menggunakan operator Boolean mis., NOT , OR , atau AND untuk menggabungkan kueri.

  • q1 DAN q2:cocok jika kueri q1 dan q2 cocok.
  • q1 ATAU q2:cocok jika kueri q1 atau q2 cocok.
  • q1 NOT q2:cocok jika kueri q1 cocok dan q2 tidak cocok.

Misalnya, untuk mendapatkan dokumen yang cocok dengan learn frasa tetapi tidak cocok dengan FTS5 frase, Anda menggunakan NOT operator sebagai berikut:

SELECT * 
FROM posts 
WHERE posts MATCH 'learn NOT text';
Code language: SQL (Structured Query Language) (sql)

Untuk mencari dokumen yang cocok dengan salah satu frasa learn atau text , Anda menggunakan OR operator seperti contoh berikut:

SELECT * 
FROM posts 
WHERE posts MATCH 'learn OR text';
Code language: SQL (Structured Query Language) (sql)

Untuk menemukan dokumen yang cocok dengan SQLite dan pencarian, gunakan AND operator seperti yang ditunjukkan di bawah ini:

SELECT * 
FROM posts 
WHERE posts MATCH 'sqlite AND searching';
Code language: SQL (Structured Query Language) (sql)

Untuk mengubah prioritas operator, Anda menggunakan tanda kurung untuk mengelompokkan ekspresi. Misalnya:

SELECT * 
FROM posts 
WHERE posts MATCH 'search AND sqlite OR help';
Code language: SQL (Structured Query Language) (sql)

Pernyataan mengembalikan dokumen yang cocok dengan search dan sqlite atau help . Untuk menemukan dokumen yang cocok dengan search dan salah satu sqlite atau help , Anda menggunakan tanda kurung sebagai berikut:

SELECT * 
FROM posts 
WHERE posts MATCH 'search AND (sqlite OR help)';
Code language: SQL (Structured Query Language) (sql)

Fungsi tambahan bawaan

SQLite menyediakan tiga fungsi tambahan bawaan yang dapat digunakan dalam kueri teks lengkap pada tabel FTS5.

  • bm25() mengembalikan nilai yang mewakili keakuratan kecocokan saat ini, nilai yang lebih rendah berarti kecocokan yang lebih baik.
  • highlight() fungsi bantu mengembalikan salinan teks dengan istilah pencarian yang dikelilingi oleh markup tertentu mis.,istilah pencarian
  • snippet() memilih fragmen teks pendek untuk memaksimalkan jumlah istilah penelusuran yang dikandungnya.

Misalnya, kueri berikut menggunakan fungsi highlight() untuk menghias istilah penelusuran menggunakan tag:

SELECT highlight(posts,0, '<b>', '</b>') title, 
       highlight(posts,1, '<b>', '</b>') body
FROM posts 
WHERE posts MATCH 'SQLite'
ORDER BY rank;
Code language: SQL (Structured Query Language) (sql)

Dalam tutorial ini, Anda telah mempelajari cara menggunakan fitur pencarian teks lengkap SQLite melalui modul tabel virtual FTS5.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 3 Cara Mengekstrak Nilai dari Dokumen JSON di SQLite

  2. Cara mengembalikan database SQLite setelah backup Android

  3. Buat Entitas Ruang untuk Tabel yang memiliki bidang dengan tipe data PANJANG di Sqlite

  4. Android:Bagaimana cara mengimpor kontak dari ponsel?

  5. SQLite Like() Fungsi dengan Contoh