Halaman ini menjelaskan apa yang dimaksud dengan penelusuran teks lengkap dan cara kerjanya.
Dengan penelusuran teks lengkap, Anda dapat membuat aplikasi yang dapat menelusuri tabel untuk menemukan kata, frasa, atau angka, bukan hanya menelusuri pencocokan persis di kolom terstruktur. Penelusuran teks lengkap menampilkan data terbaru yang di-commit secara konsisten secara transaksional ke aplikasi Anda. Kemampuan penelusuran teks lengkap Spanner juga mencakup koreksi ejaan, mengotomatiskan deteksi bahasa input penelusuran, dan mengurutkan hasil penelusuran. Spanner otomatis memperluas penelusuran teks untuk menyertakan pencocokan kata yang mendekati.
Anda perlu 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 di-commit di 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 ATAU standar]
- Kata dalam jarak dekat [world AROUND(3) cup]
- Substring [start*]
- Penelusuran numerik: Melakukan penelusuran kesetaraan dan ketidaksetaraan numerik. Penelusuran kesetaraan cocok dengan angka. Penelusuran rentang dan ketidaksetaraan cocok dengan angka dalam rentang tertentu.
- Penelusuran berbasis n-gram: Mencocokkan kata dengan variasi ejaan, termasuk nama 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 yang terdengar mirip.
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: Menandai teks yang cocok di hasil penelusuran.
- Dukungan global: Secara otomatis mendukung tokenisasi dalam berbagai bahasa, termasuk segmentasi CJK. Spesifikasi bahasa manual memungkinkan Anda melakukan penyesuaian tambahan.
- Governance: 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 penghenti: Otomatis menambahkan sinonim yang relevan secara kontekstual untuk meningkatkan recall. Misalnya, "rumah" cocok dengan "rumah ini" dan "gambar kucing" cocok dengan "gambar kitty".
- Terjemahan angka kontekstual ke dan dari teks: Mencocokkan versi teks angka dengan representasi numerik dan sebaliknya. Misalnya, "five cats" cocok dengan "5 cats".
- 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 di baris tertentu.
- Token mengacu pada setiap kata dalam dokumen yang disimpan di indeks penelusuran.
- Proses tokenisasi membagi dokumen menjadi token.
- Pembuat token adalah fungsi SQL yang digunakan untuk pembuatan token.
- 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 untuk 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 dalam fungsiSEARCH
SQL (menggunakan sintaksis kueri). - Spanner menggunakan indeks penelusuran untuk mencari dokumen yang cocok di berbagai kolom. Misalnya, aplikasi dapat mengeluarkan kueri untuk menelusuri "cry" di baris subjek dengan "so cold" dalam liriknya, dan "Prince" sebagai penyanyinya.
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 mencari baris yang berisi tag tertentu secara efisien. Untuk mengetahui informasi selengkapnya, lihat Tokenisasi array.
Menemukan data yang berada di persimpangan serangkaian kondisi kueri. Misalnya, Anda dapat menggunakan kumpulan atribut arbitrer (warna, ukuran, merek, rating, dan sebagainya) untuk menelusuri produk di katalog.
Menggunakan kondisi penelusuran numerik, baik secara terpisah maupun 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 dari 1 MB.
- Jika merupakan bagian dari persimpangan kondisi yang dijelaskan sebelumnya.
Misalnya, untuk menemukan produk dengan
color = "yellow" AND size = 14 AND rating >= 4.5
. - Saat menelusuri persimpangan kolom numerik. Misalnya, pertimbangkan tabel yang menyimpan waktu mulai dan waktu berakhir peristiwa. Indeks penelusuran
dapat menerapkan kueri yang mencari peristiwa yang
terjadi pada waktu tertentu secara efisien:
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:
- Buat token dokumen menggunakan fungsi tokenizer
Spanner, seperti
TOKENIZE_SUBSTRING
. Untuk mengetahui informasi selengkapnya, lihat Pembuatan token. - Buat indeks penelusuran untuk menyimpan token menggunakan pernyataan DDL
CREATE SEARCH INDEX
. Untuk mengetahui informasi selengkapnya, lihat Indeks penelusuran. - Buat kueri dokumen di indeks penelusuran menggunakan fungsi
SEARCH
Spanner. Untuk mengetahui informasi selengkapnya, lihat Ringkasan kueri. - Beri peringkat pada hasil kueri menggunakan fungsi
SCORE
Spanner. Untuk informasi selengkapnya, lihat Mengurutkan 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 akan meningkatkan biaya karena memerlukan resource komputasi dan penyimpanan tambahan.
Untuk mengetahui informasi selengkapnya, lihat Harga Spanner.
Langkah selanjutnya
- Pelajari tokenisasi dan tokenizer Spanner.
- Pelajari indeks penelusuran.
- Pelajari kueri penelusuran teks lengkap.