Ringkasan penelusuran teks lengkap

Halaman ini menjelaskan apa yang dimaksud dengan penelusuran teks lengkap dan cara kerjanya.

Ringkasan

Penelusuran teks lengkap memungkinkan Anda membangun aplikasi yang dapat menelusuri tabel untuk kata, frasa, atau angka, alih-alih hanya mencari padanan yang benar-benar sama {i>structured<i}. Penelusuran teks lengkap menampilkan penelusuran terbaru data commit yang konsisten secara transaksional ke aplikasi Anda. Spanner kemampuan pencarian teks lengkap juga termasuk membuat koreksi ejaan, otomatisasi deteksi bahasa input penelusuran, dan peringkat hasil penelusuran. Spanner secara otomatis memperluas penelusuran teks untuk disertakan pencocokan kata yang mendekati tanpa konfigurasi tambahan.

Anda perlu membuat indeks penelusuran pada kolom mana pun yang ingin Anda sediakan untuk penelusuran teks lengkap. Spanner menganalisis data di kolom tersebut untuk mengidentifikasi setiap kata yang akan ditambahkan ke indeks pencarian. Spanner memperbarui indeks penelusuran dengan data baru atau yang dimodifikasi segera setelah itu di-commit dalam {i>database<i}.

  • Penelusuran teks dasar: Menelusuri konten menggunakan seluruh atau sebagian frasa untuk menerima hasil yang dapat dipercaya. Contoh predikat kueri:
    • Mencocokkan semua kata [tricolor rat terrier]
    • Kata atau frasa yang sama persis ["rat terrier"]
    • Salah satu dari kata-kata ini [miniatur ATAU standar]
    • Kata yang berdekatan [dunia AROUND(3) piala]
    • {i>Substring<i} [awal*]
  • Penelusuran numerik: Melakukan penelusuran kesetaraan dan ketidaksetaraan numerik. Penelusuran kesetaraan cocok dengan angka. Penelusuran rentang dan ketidaksetaraan cocok angka dalam rentang tertentu.
  • penelusuran berbasis n-gram: Mencocokkan kata dengan variasi ejaan, termasuk kata benda dan nama diri sendiri. Jenis penelusuran ini juga membantu mencocokkan teks kueri dengan nama yang salah eja, nama dengan ejaan alternatif, dan teks dengan variasi ejaan.
  • Penelusuran Soundex: Mencocokkan kata yang terdengar mirip.

Fitur penelusuran teks lengkap

Penelusuran teks lengkap Spanner memiliki fitur berikut:

  • Peringkat hasil penelusuran: Menghitung skor untuk mengukur seberapa baik kueri cocok dengan dokumen (misalnya, memberikan bobot yang lebih berat untuk column_A). Gunakan Ekspresi SQL untuk menyesuaikan peringkat.
  • Cuplikan: Menyoroti teks yang cocok di hasil penelusuran.
  • Dukungan global: Otomatis mendukung tokenisasi di berbagai metode bahasa, termasuk CJK segmentasi. Spesifikasi bahasa manual memungkinkan Anda melakukan fine-tuning.
  • Tata kelola: Menemukan setiap kemunculan kata tertentu.
  • Koreksi ejaan: Otomatis memperbaiki kata yang salah eja dalam kueri untuk mencocokkan kata yang dieja dengan benar di penyimpanan. Misalnya, jika pengguna menelusuri "girafe", penelusuran menemukan dokumen dengan "giraffe".
  • Penambahan sinonim kontekstual, termasuk kata perhentian: Otomatis menambahkan sinonim yang relevan secara kontekstual untuk meningkatkan recall. Misalnya, "rumah" cocok dengan "rumah ini" dan "gambar kucing" cocok dengan "kitty picture".
  • Terjemahan angka kontekstual ke dan dari teks: Cocok dengan teks versi suatu angka ke representasi numerik dan sebaliknya. Sebagai contoh, "lima kucing" cocok dengan "5 kucing".
  • Konversi jamak otomatis: Mencocokkan "cat" menjadi "kucing".

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 dari dokumen yang disimpan dalam indeks penelusuran.
  • Proses tokenization memisahkan dokumen menjadi token.
  • Tokenizer adalah fungsi SQL yang digunakan untuk tokenisasi.
  • Indeks terbalik menyimpan token. Gunakan kueri SQL untuk mencari indeks terbalik.

Untuk memahami penelusuran teks lengkap, mari kita lihat aplikasi email yang menggunakan {i>database<i} untuk menyimpan email untuk setiap pengguna. Setiap baris adalah satu email. Masing-masing email berisi kolom seperti subjek, isi, pengirim, dan penerima. Email aplikasi ini menggunakan penelusuran teks lengkap agar pengguna dapat menelusuri {i>inbox<i} mereka menggunakan kueri natural language:

  • Penelusuran mendukung kueri seperti Dallas OR Seattle. Lamaran dapat langsung memasukkan input pengguna akhir dari kotak pencarian ke dalam SQL SEARCH fungsi (menggunakan bahasa kueri).
  • Spanner menggunakan indeks penelusuran untuk mencari dokumen yang cocok di berbagai {i>field<i}. Misalnya, aplikasi email dapat mengeluarkan kueri untuk menelusuri "Memo penting" pada baris subjek dengan kata "Anggaran" dalam isi email, dan "John" dalam nama pengirim.

Indeks penelusuran memiliki berbagai penggunaan selain penelusuran teks lengkap, seperti hal berikut:

  • Mengindeks elemen dalam kolom array. Pertimbangkan aplikasi yang menggunakan untuk menyimpan tag yang terkait dengan item. Dengan indeks penelusuran, aplikasi bisa secara efisien mencari baris yang berisi tag spesifik. Untuk informasi selengkapnya, lihat Tokenisasi array.

  • Menemukan data yang terletak di perpotongan suatu kumpulan kondisi kueri. Misalnya, Anda dapat menggunakan kumpulan atribut arbitrer (warna, ukuran, merek, rating, dan sebagainya) untuk menelusuri produk dalam katalog.

  • Menggunakan kondisi pencarian numerik, secara terpisah atau dalam kombinasi dengan teks lengkap kondisi tertentu. Beberapa contoh ketika indeks penelusuran berguna untuk penelusuran:

    • Jika digabungkan dengan aplikasi teks lengkap. Misalnya, untuk menghitung email dengan subjek Picture dan ukuran lebih dari 1 MB.
    • Ketika itu adalah 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. Sebagai misalnya, pertimbangkan tabel yang menyimpan waktu mulai dan berakhir peristiwa. Telusuri indeks bisa secara efisien mengimplementasikan kueri yang mencari peristiwa yang terjadi pada waktu tertentu: start_time <= @p AND end_time > @p.

Langkah-langkah penelusuran teks lengkap

Di Spanner, penelusuran teks lengkap memerlukan langkah-langkah berikut:

  1. Membuat token dokumen menggunakan tokenizer Spanner fungsi, seperti TOKENIZE_SUBSTRING. Untuk informasi selengkapnya, lihat Tokenisasi.
  2. Buat indeks penelusuran untuk menyimpan token menggunakan CREATE SEARCH INDEX Pernyataan DDL. Untuk informasi selengkapnya, lihat Telusuri indeks.
  3. Membuat kueri dokumen dalam indeks penelusuran menggunakan Spanner SEARCH . Untuk mengetahui informasi selengkapnya, lihat Ringkasan kueri.
  4. Memberi peringkat hasil kueri menggunakan Spanner SCORE . Untuk mengetahui informasi selengkapnya, lihat Hasil penelusuran peringkat.

Batasan

Harga

Tidak ada biaya tambahan dari Spanner jika Anda menggunakan pencarian teks lengkap, meskipun penerapan pencarian teks lengkap meningkatkan biaya karena perlunya resource komputasi dan penyimpanan tambahan.

Untuk informasi selengkapnya, lihat harga Spanner.

Langkah selanjutnya