全部产品
Search
文档中心

Tablestore:Apa yang harus saya lakukan jika tidak ada data yang ditemukan saat saya memanggil operasi Search untuk indeks pencarian?

更新时间:Jul 06, 2025

Jika tidak ada data yang ditemukan saat Anda memanggil operasi Search untuk indeks pencarian, kemungkinan besar data belum disinkronkan dengan benar dari tabel data ke indeks pencarian atau metode kueri yang digunakan tidak sesuai. Dalam situasi ini, periksa apakah data telah disinkronkan dengan benar dan apakah metode kueri yang digunakan sudah tepat.

Deskripsi masalah

Saat memanggil operasi Search untuk indeks pencarian guna menanyakan data, tidak ada data yang ditemukan.

Penyebab yang mungkin

  • Penyebab 1: Data di tabel data salah disinkronkan ke indeks pencarian

    • Kasus 1: Data di tabel data tidak disinkronkan ke indeks pencarian. Sinkronisasi data dari tabel data ke indeks pencarian bersifat asinkron. Oleh karena itu, data di indeks pencarian mungkin belum diperbarui.

    • Kasus 2: Nama kolom di indeks pencarian peka huruf besar/kecil dan mungkin tidak cocok dengan nama kolom di tabel data. Sebagai contoh, sebuah kolom di tabel data bernama ColumnName, tetapi kolom di indeks pencarian bernama columnname. Hal ini menyebabkan ketidakcocokan antara kedua nama kolom tersebut.

    • Kasus 3: Tipe data kolom di indeks pencarian tidak sesuai dengan tipe data kolom yang dipetakan di tabel data. Sebagai contoh, sebuah kolom di tabel data bertipe Integer, tetapi kolom yang dipetakan di indeks pencarian bertipe Keyword.

      Catatan

      Model kolom lebar Tablestore bersifat bebas skema. Kolom atribut dapat memiliki tipe data berbeda di baris yang berbeda, yang dapat menyebabkan sinkronisasi dari tabel data ke indeks pencarian gagal untuk baris tertentu.

    • Kasus 4: Format data kolom di indeks pencarian tidak sesuai dengan format data kolom yang dipetakan di tabel data. Sebagai contoh, sebuah kolom di tabel data bertipe String dengan nilai -91,100, tetapi kolom yang dipetakan di indeks pencarian bertipe Geopoint, Nested, atau Vector.

      Catatan
      • Tipe data Geopoint di indeks pencarian berformat latitude,longitude. Latitude harus dalam rentang -90 hingga +90, dan longitude harus dalam rentang -180 hingga +180. Latitude harus ditentukan sebelum longitude.

      • Tipe data Nested di indeks pencarian berformat array JSON. Contoh: [{"tagName":"tag1", "score":0.8}, {"tagName":"tag2", "score":0.2}].

      • Tipe data Vector di indeks pencarian berformat array Float32. Panjang array harus sama dengan jumlah dimensi bidang. Sebagai contoh, jumlah dimensi untuk [1,5.1,4.7,0.08] adalah 4.

  • Penyebab 2: Metode kueri yang tidak sesuai digunakan

    • Kasus 1: Kueri Match digunakan untuk menanyakan data di bidang bertipe data Keyword di indeks pencarian. Sebagai contoh, nilai kolom di tabel data adalah "abc" dan kolom yang dipetakan di indeks pencarian bertipe Keyword. Jika kondisi kueri diatur menjadi MatchQuery("ab"), tidak ada data yang ditemukan karena data bertipe Keyword tidak dapat di-tokenisasi. Anda tidak dapat menggunakan kueri match untuk mencocokkan token.

    • Kasus 2: Parameter salah dikonfigurasi dalam kondisi kueri. Sebagai contoh, nilai kolom di tabel data adalah "abc" dan kolom yang dipetakan di indeks pencarian bertipe Keyword. Jika kondisi kueri diatur menjadi TermQuery("ab"), tidak ada data yang ditemukan.

    • Kasus 3: Jika kueri rentang digunakan untuk menanyakan kolom Keyword di indeks pencarian, pengaturan kondisi kueri tidak valid. Sebagai contoh, nilai kolom di tabel data adalah 20 dan kolom yang dipetakan di indeks pencarian bertipe Keyword. Jika kondisi kueri diatur menjadi RangeQuery(>10), tidak ada data yang ditemukan.

      Catatan

      Dalam kueri rentang, data bertipe Keyword dibandingkan berdasarkan urutan alfabetis, sedangkan data bertipe Long dan Double dibandingkan berdasarkan nilai numerik.

    • Kasus 4: Metode tokenisasi salah ditentukan. Sebagai contoh, nilai kolom di tabel data adalah "abcdefg", kolom yang dipetakan di indeks pencarian bertipe Text, dan metode tokenisasi diatur ke tokenisasi kata tunggal. Jika kondisi kueri diatur menjadi MatchQuery("abcd"), tidak ada data yang ditemukan.

Solusi

  • Data di tabel data tidak disinkronkan dengan benar ke indeks pencarian

    • Pastikan bahwa data di tabel data disinkronkan ke indeks pencarian. Dalam kebanyakan kasus, latensi untuk sinkronisasi data tambahan berada dalam 3 detik. Latensi untuk sinkronisasi data penuh berbanding lurus dengan volume data di tabel data.

    • Saat membuat indeks pencarian, pastikan pemetaan nama dan tipe data antara kolom di indeks pencarian dan kolom di tabel data benar. Selain itu, pastikan format data di tabel data sesuai dengan tipe data di indeks pencarian. Untuk informasi lebih lanjut, lihat Tipe data, Tipe String, Tipe data Date, dan Tipe data Array dan Nested.

      Catatan

      Jika konfigurasi indeks pencarian tidak valid, Anda dapat membuat indeks pencarian baru atau memodifikasi skema indeks pencarian saat ini secara dinamis. Untuk informasi lebih lanjut, lihat Buat indeks pencarian dan Modifikasi skema indeks pencarian secara dinamis.

    • Saat menggunakan fitur kueri vektor k-nearest neighbor (KNN), pastikan atribut bidang Vektor di indeks pencarian sama dengan atribut bidang Vektor yang dihasilkan oleh sistem penyematan. Atribut bidang Vektor meliputi jumlah dimensi, tipe data, dan algoritma pengukuran jarak. Untuk informasi lebih lanjut, lihat Kueri vektor KNN.

  • Metode kueri yang tidak sesuai digunakan

    • Saat menggunakan indeks pencarian untuk menanyakan data, pastikan metode kueri yang sesuai digunakan dan kondisi kueri yang valid ditentukan. Untuk informasi lebih lanjut, lihat Memulai.

    • Pastikan metode tokenisasi yang benar ditentukan. Untuk informasi lebih lanjut tentang cara memilih metode tokenisasi yang benar, lihat Tokenisasi.