Fungsi fungsionalitas
Bidang yang Anda rujuk dalam parameter fungsi fungsionalitas harus dikonfigurasi sebagai bidang indeks atau atribut sesuai dengan deskripsi masing-masing fungsi.
Bidang dokumen yang digunakan sebagai parameter fungsi harus dikonfigurasi sebagai indeks atau atribut, sesuai kebutuhan fungsi tertentu.
in atau notin: menilai apakah nilai bidang berada dalam daftar tertentu
1. Sintaks
in(field, "number1|number2")notin(field, "number1|number2")
2. Parameter
field: nama bidang yang akan dinilai. Hanya mendukung bidang bertipe INT, LITERAL, FLOAT, atau DOUBLE. Tipe ARRAY atau TEXT serta analyzer untuk pencarian fuzzy tidak didukung.number N: elemen dalam suatu himpunan. Pisahkan beberapa elemen dengan tanda vertikal (|). Setiap elemen harus berupa string.
3. Nilai kembalian
true/false
4. Skenario
Skenario 1: Ambil dokumen yang berisi "iphone" dan memiliki bidang type dengan nilai 1, 2, atau 3. Bidang type harus bertipe INT.
query=default:'iphone'&&filter=in(type, '1|2|3')
Skenario 2: Ambil dokumen yang berisi "iphone" dan memiliki bidang type dengan nilai bukan 1, 2, atau 3. Bidang type harus bertipe INT32.
query=default:'iphone'&&filter=notin(type, '1|2|3')
5. Catatan penggunaan
Bidang yang Anda rujuk dalam parameter fungsi harus dikonfigurasi sebagai bidang atribut.
Jika Anda menggunakan fungsi in atau notin dalam klausa filter, Anda tidak dapat menggunakan bidang bertipe ARRAY. Jika dilanggar, akan muncul kesalahan sintaks dengan kode kesalahan 6141: Filter clause syntax error.
-
Fungsi
in(field, "value1|value2")setara dengan(field = value1) OR (field = value2). Namun, fungsiinmemberikan performa yang lebih baik. Prinsip yang sama berlaku untuk fungsinotin. -
Memberikan sejumlah besar nilai (misalnya, ribuan) ke fungsi
inataunotindapat menurunkan performa kueri secara signifikan. Daftar nilai yang lebih panjang meningkatkan beban komputasi untuk filtering, yang dapat menyebabkan latensi kueri lebih tinggi atau bahkan timeout. -
Jika Anda harus mengirimkan sejumlah besar nilai, pisahkan daftar tersebut menjadi batch yang lebih kecil (misalnya, maksimal 500 nilai per batch) untuk kueri terpisah, lalu gabungkan hasilnya.