Ringkasan penelusuran teks lengkap

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.

  • 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.

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, seperti Prince OR Camille. Aplikasi dapat langsung memasukkan input pengguna akhir dari kotak penelusuran ke dalam fungsi SEARCH 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:

  1. Buat token dokumen menggunakan fungsi tokenizer Spanner, seperti TOKENIZE_SUBSTRING. Untuk mengetahui informasi selengkapnya, lihat Pembuatan token.
  2. Buat indeks penelusuran untuk menyimpan token menggunakan pernyataan DDL CREATE SEARCH INDEX. Untuk mengetahui informasi selengkapnya, lihat Indeks penelusuran.
  3. Buat kueri dokumen di indeks penelusuran menggunakan fungsi SEARCH Spanner. Untuk mengetahui informasi selengkapnya, lihat Ringkasan kueri.
  4. Beri peringkat pada hasil kueri menggunakan fungsi SCORE Spanner. Untuk informasi selengkapnya, lihat Mengurutkan hasil penelusuran.

Batasan

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