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.
CatatanModel 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.CatatanTipe 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 menjadiMatchQuery("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 menjadiTermQuery("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.CatatanDalam 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 menjadiMatchQuery("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.
CatatanJika 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.