Halaman ini menjelaskan apa yang dimaksud dengan penelusuran teks lengkap dan cara kerjanya.
Penelusuran teks lengkap memungkinkan Anda membuat aplikasi yang dapat menelusuri tabel untuk menemukan kata, frasa, atau angka, bukan hanya menelusuri kecocokan persis di kolom terstruktur. Penelusuran teks lengkap menampilkan data yang di-commit dan konsisten secara transaksional terbaru ke aplikasi Anda. Kemampuan penelusuran teks lengkap Spanner juga mencakup koreksi ejaan, mengotomatiskan deteksi bahasa input penelusuran, dan memberi peringkat hasil penelusuran. Spanner otomatis memperluas penelusuran teks untuk menyertakan pencocokan kata yang mendekati.
Anda harus membuat indeks penelusuran pada kolom yang ingin Anda sediakan untuk penelusuran teks lengkap. Spanner menganalisis data dalam kolom tersebut untuk mengidentifikasi setiap kata yang akan ditambahkan ke indeks penelusuran. Spanner memperbarui indeks penelusuran dengan data baru atau yang diubah segera setelah data tersebut di-commit dalam database.
Jenis penelusuran teks lengkap
- Penelusuran teks dasar: Menelusuri konten menggunakan seluruh atau sebagian kata atau frasa untuk menerima hasil yang andal. Contoh predikat kueri:
- Mencocokkan semua kata [tricolor rat terrier]
- Kata atau frasa persis ["rat terrier"]
- Salah satu kata berikut [miniatur OR standar]
- Kata dalam jarak dekat [world AROUND(3) cup]
- Substring [start*]
- Penelusuran numerik: Melakukan penelusuran kesetaraan dan ketidaksetaraan numerik. Penelusuran kesamaan cocok dengan angka. Penelusuran rentang dan ketidaksetaraan mencocokkan angka dalam rentang tertentu.
- Penelusuran berbasis n-gram: Mencocokkan kata-kata dengan variasi ejaan, termasuk kata benda dan nama diri. Jenis penelusuran ini juga membantu mencocokkan teks kueri dengan nama yang salah eja, nama dengan ejaan alternatif, dan teks dengan variasi ejaan lainnya.
- Penelusuran Soundex: Mencocokkan kata-kata yang terdengar serupa.
Fitur penelusuran teks lengkap
Penelusuran teks lengkap Spanner memiliki fitur berikut:
- Hasil penelusuran yang diberi peringkat: Menghitung skor untuk mengukur seberapa cocok kueri dengan dokumen (misalnya, memberikan bobot yang lebih besar untuk column_A). Gunakan ekspresi SQL untuk menyesuaikan peringkat.
- Cuplikan: Menyoroti teks yang cocok dalam hasil penelusuran.
- Dukungan global: Mendukung tokenisasi secara otomatis dalam berbagai bahasa, termasuk segmentasi CJK. Penentuan bahasa secara manual memungkinkan Anda melakukan penyesuaian tambahan.
- Tata kelola: Menemukan setiap kemunculan kata tertentu.
- Koreksi ejaan: Secara otomatis mengoreksi kata yang salah eja dalam kueri agar cocok dengan kata yang ejaannya benar dalam penyimpanan. Misalnya, jika pengguna menelusuri "girafe", penelusuran akan menemukan dokumen dengan "giraffe".
- Penambahan sinonim kontekstual, termasuk kata henti: Secara otomatis menambahkan sinonim yang relevan secara kontekstual untuk meningkatkan ingatan. Misalnya, "rumah" cocok dengan "rumah ini" dan "gambar kucing" cocok dengan "gambar anak kucing".
- Terjemahan angka kontekstual ke dan dari teks: Mencocokkan versi tekstual angka dengan representasi numerik dan sebaliknya. Misalnya, "lima kucing" cocok dengan "5 kucing".
- Konversi jamak otomatis: Mencocokkan "cat" dengan "cats".
Konsep penelusuran teks lengkap
Penelusuran teks lengkap memiliki konsep utama berikut:
- Dokumen mengacu pada data yang dapat ditelusuri dalam baris tertentu.
- Token mengacu pada setiap kata dalam dokumen yang disimpan dalam indeks penelusuran.
- Proses tokenisasi membagi dokumen menjadi token.
- Tokenizer adalah fungsi SQL yang digunakan untuk tokenisasi.
- Indeks terbalik menyimpan token. Gunakan kueri SQL untuk menelusuri indeks terbalik.
Contoh kasus penggunaan untuk penelusuran teks lengkap
Untuk memahami penelusuran teks lengkap, mari kita lihat aplikasi yang menggunakan database untuk menyimpan lagu setiap penyanyi. Setiap baris adalah satu lagu. Setiap lagu berisi kolom seperti judul, lirik, penyanyi, dan album. Aplikasi ini menggunakan penelusuran teks lengkap untuk memungkinkan pengguna menelusuri lagu menggunakan kueri bahasa alami:
- Penelusuran mendukung kueri yang menggunakan operator
OR
, sepertiPrince OR Camille
. Aplikasi dapat langsung memasukkan input pengguna akhir dari kotak penelusuran ke fungsi SQLSEARCH
(menggunakan sintaksis rquery). Untuk mengetahui informasi selengkapnya, lihat Membuat kueri indeks penelusuran. - Spanner menggunakan indeks penelusuran untuk mencari dokumen yang cocok di berbagai kolom. Misalnya, aplikasi dapat mengeluarkan kueri untuk menelusuri "cry" di judul, dengan "so cold" di lirik, dan "Prince" sebagai penyanyi.
Penggunaan lain untuk indeks penelusuran
Indeks penelusuran memiliki berbagai kegunaan selain penelusuran teks lengkap, seperti berikut:
Mengindeks elemen dalam kolom array. Pertimbangkan aplikasi yang menggunakan kolom array untuk menyimpan tag yang terkait dengan item. Dengan indeks penelusuran, aplikasi dapat secara efisien mencari baris yang berisi tag tertentu. Untuk mengetahui informasi selengkapnya, lihat Tokenisasi array.
Menemukan data yang berada di persimpangan sekumpulan kondisi kueri. Misalnya, Anda dapat menggunakan serangkaian atribut arbitrer (warna, ukuran, merek, rating, dan sebagainya) untuk menelusuri produk dalam katalog.
Menggunakan kondisi penelusuran numerik, sendiri atau bersama dengan kondisi teks lengkap. Beberapa contoh saat indeks penelusuran berguna untuk penelusuran numerik:
- Jika digabungkan dengan aplikasi teks lengkap. Misalnya, untuk menemukan email dengan subjek Gambar dan ukuran lebih besar dari 1 MB.
- Jika merupakan bagian dari irisan kondisi yang dijelaskan sebelumnya.
Misalnya, untuk menemukan produk yang
color = "yellow" AND size = 14 AND rating >= 4.5
. - Saat menelusuri persimpangan kolom numerik. Misalnya, pertimbangkan tabel yang menyimpan waktu mulai dan akhir acara. Indeks penelusuran dapat secara efisien menerapkan kueri yang mencari peristiwa yang terjadi pada waktu tertentu:
start_time <= @p AND end_time > @p
.
Untuk mengetahui informasi selengkapnya, lihat Indeks numerik.
Langkah-langkah penelusuran teks lengkap
Di Spanner, penelusuran teks lengkap memerlukan langkah-langkah berikut:
- Lakukan tokenisasi dokumen menggunakan fungsi tokenisasi Spanner, seperti
TOKENIZE_SUBSTRING
. Untuk mengetahui informasi selengkapnya, lihat Tokenisasi. - Buat indeks penelusuran untuk menyimpan token menggunakan pernyataan DDL
CREATE SEARCH INDEX
. Untuk mengetahui informasi selengkapnya, lihat Mengindeks penelusuran. - Buat kueri dokumen dalam indeks penelusuran menggunakan fungsi Spanner
SEARCH
. Untuk mengetahui informasi selengkapnya, lihat Ringkasan kueri. - Urutkan hasil kueri menggunakan fungsi Spanner
SCORE
. Untuk mengetahui informasi selengkapnya, lihat Memberi peringkat hasil penelusuran.
Batasan
- Penelusuran teks lengkap tidak mendukung Assured Workloads.
Harga
Tidak ada biaya tambahan dari Spanner saat Anda menggunakan penelusuran teks lengkap, meskipun penerapan penelusuran teks lengkap meningkatkan biaya karena kebutuhan akan resource komputasi dan penyimpanan tambahan.
Untuk mengetahui informasi selengkapnya, lihat Harga Spanner.
Langkah berikutnya
- Pelajari tokenisasi dan tokenisasi Spanner.
- Pelajari indeks penelusuran.
- Pelajari kueri penelusuran teks lengkap.