All Products
Search
Document Center

OpenSearch:Klausa Filter

Last Updated:Aug 22, 2026

Klausa filter mempersempit hasil pencarian dengan menerapkan kondisi pada bidang atribut di atas klausa kueri.

Sintaksis

filter=<field><operator><value>

Gabungkan beberapa kondisi menggunakan operator logika:

filter=category=2 AND (hit+sale)*rate>10000

Operator

JenisOperator yang didukung
Relasional>, <, =, <=, >=, !=
Aritmetika+, -, *, /, &, ^, |
LogisAND, OR, () — harus dalam huruf kapital
Keanggotaan daftarin(field, "v1|v2|v3"), notin(field, "v1|v2|v3")

Batasan berdasarkan jenis bidang

Jenis bidangOperator yang didukungCatatan
INT, INT32, INT64Semua operator relasional dan aritmetikaGunakan in/notin untuk pemeriksaan keanggotaan daftar (hanya untuk INT dan INT32; lihat in and notin untuk jenis yang didukung)
FLOAT, DOUBLE>, <, <=, >=, !=Hindari = — presisi floating-point membuat kesamaan eksak tidak dapat diandalkan
LITERAL=, != sajaBidang LITERAL tidak ditokenisasi, sehingga hanya pencocokan eksak yang didukung; sertakan nilai dalam tanda kutip ganda, misalnya tags="palace" — menghilangkan tanda kutip akan menghasilkan error 6135: "The value type of the constant expression is invalid"
INT_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, LITERAL_ARRAYOperator relasional dan aritmetikaGunakan bit_struct untuk operasi tingkat bit pada elemen INT_ARRAY
TEXT, SHORT_TEXTTidak didukungJenis ini tidak dapat dikonfigurasi sebagai bidang atribut dan tidak dapat digunakan dalam klausa filter
ARRAY (generik)Tidak didukung untuk in/notinBidang yang menggunakan alat analisis untuk pencarian fuzzy juga tidak termasuk dalam in/notin

Catatan:

  • Klausa filter bersifat opsional.

  • Semua bidang yang dirujuk dalam klausa filter harus dikonfigurasi sebagai bidang atribut dalam skema aplikasi. Bidang bertipe TEXT dan SHORT_TEXT tidak dapat dikonfigurasi sebagai bidang atribut.

  • Fungsi seperti distance dapat digunakan dalam klausa filter untuk pengurutan.

Fungsi bawaan

Fungsi-fungsi berikut memperluas kemampuan pemfilteran melampaui perbandingan bidang sederhana.

distance — filter berdasarkan kedekatan geografis

Mengembalikan jarak bola antara lokasi yang tersimpan dan titik kueri. Gunakan fungsi ini untuk skenario layanan berbasis lokasi (LBS) ketika Anda perlu membatasi hasil dalam radius geografis tertentu.

Bidang lon dan lat harus dikonfigurasi sebagai bidang atribut.

Contoh: Temukan lokasi KFC dalam jarak 10 km dari pengguna di bujur 120,34256 dan lintang 30,56982.

query=default:'KFC'&&sort=+distance(lon,lat,"120.34256","30.56982")

in_polygon — filter berdasarkan area pengiriman atau batas layanan

Memeriksa apakah titik tetap (yang diberikan dalam kueri) berada di dalam poligon yang tersimpan dalam bidang dokumen. Gunakan fungsi ini ketika setiap dokumen mendefinisikan area geografis (seperti radius pengiriman pedagang) dan Anda ingin menemukan area yang mencakup lokasi pengguna tertentu.

Contoh: Temukan pedagang yang area pengirimannya mencakup pengguna di koordinat (120,307234, 39,294245), di mana coordinates menyimpan poligon pengiriman setiap pedagang.

query=default:'Foods'&&filter=in_polygon(coordinates, 120.307234, 39.294245)>0

in_query_polygon — filter berdasarkan area yang ditentukan dalam kueri

Memeriksa apakah titik yang tersimpan dalam dokumen berada di dalam poligon yang Anda definisikan dalam kueri. Gunakan fungsi ini ketika Anda ingin mencari di dalam batas geografis khusus, seperti kawasan bisnis.

Titik-titik sudut poligon diteruskan melalui kvpairs. Bidang point menyimpan lokasi geografis setiap dokumen.

Contoh: Temukan lokasi KFC di dalam kawasan bisnis Yintai.

query=default:'KFC'&&filter=in_query_polygon("polygons",point)>0&&kvpairs=polygons:xA\,yA\,xB\,Yb\,xC\,Yc;xD\,yD\,xE\,yE\,xF\,yF\,xG\,yG

bit_struct — filter berdasarkan array integer terkemas bit

Membagi setiap integer 64-bit dalam bidang INT_ARRAY menjadi rentang bit bernama dan mengevaluasi kondisi terhadapnya. Gunakan fungsi ini ketika satu bidang menyandikan beberapa atribut (seperti waktu buka dan tutup) yang dikemas ke dalam segmen bit.

Contoh: Temukan toko yang buka antara pukul 14.00 (840 menit) dan 15.30 (930 menit). Bidang open_time bertipe INT64_ARRAY. Setiap integer menyimpan waktu buka dalam bit 0–31 dan waktu tutup dalam bit 32–63.

filter=bit_struct(open_time, "0-31,32-63","overlap,$1,$2,840,930")!=-1

fieldlen — filter berdasarkan panjang bidang

Mengembalikan panjang karakter bidang LITERAL. Gunakan fungsi ini untuk mengecualikan nilai kosong atau yang terlalu panjang.

Contoh: Kembalikan hanya dokumen di mana usr_name tidak kosong.

query=default:'Keyword'&&filter=fieldlen(usr_name)>0

in dan notin — filter berdasarkan daftar nilai

Memeriksa apakah nilai bidang muncul di dalam (atau tidak ada dalam) daftar yang dipisahkan tanda pipa. Jenis yang didukung: INT, LITERAL, FLOAT, DOUBLE. Tidak didukung untuk ARRAY, TEXT, atau bidang yang menggunakan alat analisis.

Untuk informasi lebih lanjut, lihat in and notin.

Contoh: Kembalikan dokumen yang berisi "iphone" di mana bidang INT type bernilai 1, 2, atau 3.

query=default:'iphone'&&filter=in(type, "1|2|3")

Contoh: Kecualikan dokumen di mana bidang INT32 type bernilai 1, 2, atau 3.

query=default:'iphone'&&filter=notin(type, "1|2|3")

multi_attr — filter berdasarkan elemen spesifik dalam bidang array

Mengembalikan nilai pada posisi tertentu dalam bidang array. Gunakan fungsi ini ketika suatu bidang menyimpan beberapa nilai untuk atribut berbeda (seperti harga pasar, harga diskon, dan harga jual) dan Anda ingin memfilter berdasarkan satu posisi spesifik.

Contoh: Temukan ponsel yang harga jualnya (posisi 2 dalam bidang price) di bawah 1.000.

query=default:'Mobile phone'&&filter=multi_attr(price,2)<1000

Contoh

Filter berdasarkan bidang INT

Bidang category (INT32) menggunakan nilai 1 untuk berita dan 2 untuk BBS. Untuk menemukan dokumen tentang "Zhejiang University" dalam kategori BBS, gunakan salah satu dari berikut:

query=default:'Zhejiang University' AND category_search:'2'
query=default:'Zhejiang University'&&filter=category=2

Filter berdasarkan bidang array LITERAL

Dalam aplikasi pencarian novel, bidang tags (STRING_ARRAY) menyimpan tag genre seperti "palace", "suspense and horror", dan "romance". Untuk menemukan hasil genre palace untuk "Empresses in the Palace":

query=default:'Empresses in the Palace'&&filter=tags="palace"

Gabungkan operator aritmetika dan relasional

Dalam aplikasi e-commerce, temukan produk gaun di mana skor keterlibatan gabungan (hit + sale) * rate melebihi 10.000 dan daftar dibuat sebelum timestamp 1402345600:

query=default:'dress'&&filter=(hit+sale)*rate>10000 AND create_time<1402345600