All Products
Search
Document Center

OpenSearch:Catatan penggunaan

Last Updated:Aug 22, 2026

Catatan penggunaan untuk user-defined functions (UDFs).

Daftar UDF

Function

Deskripsi

contain

Memeriksa apakah nilai bidang termasuk dalam himpunan yang ditentukan. Mendukung bidang bernilai tunggal dan bernilai ganda.

notcontain

Memeriksa apakah nilai bidang tidak termasuk dalam himpunan yang ditentukan. Mendukung bidang bernilai tunggal dan bernilai ganda.

MATCHINDEX

Menanyakan indeks terbalik dari bidang tertentu berdasarkan kondisi yang ditentukan.

QUERY

Menanyakan indeks terbalik berdasarkan kondisi yang ditentukan, menggunakan sintaks kueri HA3 asli.

hashcombine

Menggabungkan beberapa nilai INT64 menjadi satu nilai INT64.

rangevalue

Memetakan nilai bidang berdasarkan rentang.

range

Memeriksa apakah nilai bidang termasuk dalam interval tertentu.

normalizescore

Menormalisasi nilai bidang.

Contoh kueri

Kueri seluruh data dalam tabel

SELECT nid, price, brand, size FROM phone ORDER BY nid LIMIT 1000 
USE_TIME: 0.881, ROW_COUNT: 10

------------------------------- TABLE INFO ---------------------------
                 nid |               price |               brand |                size |
                   1 |                3599 |              Huawei |                 5.9 |
                   2 |                4388 |              Huawei |                 5.5 |
                   3 |                 899 |              Xiaomi |                   5 |
                   4 |                2999 |                OPPO |                 5.5 |
                   5 |                1299 |               Meizu |                 5.5 |
                   6 |                 169 |               Nokia |                 1.4 |
                   7 |                3599 |               Apple |                 4.7 |
                   8 |                5998 |               Apple |                 5.5 |
                   9 |                4298 |               Apple |                 4.7 |
                  10 |                5688 |             Samsung |                 5.6 |

contain

  • Prototipe

    boolean contain(INT a, const string b)
    boolean contain(LITERAL a, const string b)
    boolean contain(INT_ARRAY a, const string b)
    boolean contain(LITERAL_ARRAY a, const string b)
  • Deskripsi

Memeriksa apakah bidang bernilai tunggal atau bernilai ganda a berisi konten yang dijelaskan dalam b.

  • Parameter

    Parameter a: Input bertipe INT, LITERAL, INT_ARRAY, atau LITERAL_ARRAY.

    Parameter b: Ekspresi string konstan, dipisahkan oleh |, yang menunjukkan bahwa pencocokan dengan salah satu item sudah cukup.

  • Nilai kembali

    Nilai boolean yang menunjukkan apakah parameter a berisi himpunan yang dijelaskan dalam parameter b.

  • Contoh

SELECT nid, price, brand, size FROM phone WHERE contain(nid, '1|2|3') ORDER BY nid LIMIT 100
USE_TIME: 0.059, ROW_COUNT: 3

------------------------------- TABLE INFO ---------------------------
                 nid |               price |               brand |                size |
                   1 |                3599 |              Huawei |                 5.9 |
                   2 |                4388 |              Huawei |                 5.5 |
                   3 |                 899 |              Xiaomi |                   5 |

notcontain

  • Prototipe

    boolean notcontain(INT a, const string b)
    boolean notcontain(LITERAL a, const string b)
    boolean notcontain(INT_ARRAY a, const string b)
    boolean notcontain(LITERAL_ARRAY a, const string b)
  • Deskripsi

    Memeriksa apakah bidang bernilai tunggal atau bernilai ganda a tidak termasuk dalam konten yang dijelaskan dalam b.

  • Parameter

    Parameter a: Input bertipe INT, LITERAL, INT_ARRAY, atau LITERAL_ARRAY.

    Parameter b: Ekspresi string konstan, dipisahkan oleh |, yang menunjukkan bahwa tidak ada item yang boleh cocok.

  • Nilai kembali

    Nilai boolean yang menunjukkan apakah parameter a tidak termasuk dalam himpunan yang dijelaskan dalam parameter b.

  • Contoh

    Gunakan notcontain untuk mengambil semua catatan yang nilai bidang nid-nya tidak termasuk dalam rentang [1,2,3].

    SELECT nid, price, brand, size FROM phone WHERE notcontain(nid, '1|2|3') ORDER BY nid LIMIT 100
    USE_TIME: 0.092, ROW_COUNT: 7
    
    ------------------------------- TABLE INFO ---------------------------
                     nid |               price |               brand |                size |
                       4 |                2999 |                OPPO |                 5.5 |
                       5 |                1299 |               Meizu |                 5.5 |
                       6 |                 169 |               Nokia |                 1.4 |
                       7 |                3599 |               Apple |                 4.7 |
                       8 |                5998 |               Apple |                 5.5 |
                       9 |                4298 |               Apple |                 4.7 |
                      10 |                5688 |             Samsung |                 5.6 |

MATCHINDEX

  • Prototipe

    boolean MATCHINDEX(const string a, const string b)
  • Deskripsi

    Memeriksa apakah bidang a berisi konten yang dijelaskan dalam b, untuk pengambilan indeks bidang tunggal.

    Hanya digunakan untuk optimisasi percepatan indeks terbalik selama fase pengambilan tabel indeks, dalam kondisi WHERE.

  • Parameter

    Parameter a: Input bertipe string konstan, sesuai dengan bidang tempat optimisasi indeks terbalik dibangun.

    Parameter b: Input bertipe string konstan, yang isinya merupakan deskripsi string.

Parameter b dapat ditanyakan sebagai string tunggal.

  • Nilai kembali

    Nilai boolean yang menunjukkan apakah bidang a berisi konten yang dijelaskan dalam parameter b.

  • Contoh

    Gunakan MATCHINDEX untuk mengambil catatan yang bidang indeks terbaliknya title berisi kata kunci "lens".

    SELECT nid, brand FROM phone WHERE MATCHINDEX('title', 'lens')
    ------------------------------- TABLE INFO ---------------------------
                     nid |               brand |
                       1 |              Huawei |

QUERY

  • Prototipe

    boolean QUERY(const string a, const string b)
  • Deskripsi

    Memeriksa apakah bidang a berisi konten yang dijelaskan dalam b, menyediakan kemampuan tokenisasi dan pengambilan otomatis.

    Digunakan untuk mendukung sintaks kueri asli mesin HA3 (sintaks kueri HA3) dalam mode SQL.

    Hanya digunakan untuk optimisasi percepatan indeks terbalik selama fase pengambilan tabel indeks, dalam kondisi WHERE.

  • Parameter

    Parameter a: Input bertipe string konstan, yang digunakan sebagai bidang indeks default.

    Parameter b: Input bertipe string konstan, yang isinya merupakan deskripsi string.

Ini ditambahkan ke penguraian kueri dan dapat digunakan untuk indeks rentang.

  • Nilai kembali

    Nilai boolean yang menunjukkan apakah bidang a berisi konten yang dijelaskan dalam parameter b.

  • Contoh

  • Gunakan QUERY untuk menanyakan entri yang title-nya berisi "Huawei phone".

  • SELECT nid, price, brand, size FROM phone WHERE QUERY(title, 'Huawei phone')
    USE_TIME: 0.034, ROW_COUNT: 1
    
    ------------------------------- TABLE INFO ---------------------------
                     nid |               price |               brand |                size |
                       2 |                4388 |              Huawei |                 5.5 |
  • Gunakan kondisi gabungan untuk mengambil entri yang title-nya berisi "Huawei phone" atau "OPPO phone".

  • SELECT nid, price, brand, size FROM phone 
       WHERE QUERY(title, 'Huawei phone OR OPPO phone')
    USE_TIME: 0.03, ROW_COUNT: 2
    
    ------------------------------- TABLE INFO ---------------------------
                     nid |               price |               brand |                size |
                       2 |                4388 |              Huawei |                 5.5 |
                       4 |                2999 |                OPPO |                 5.5 |
  • Catatan:

  • Parameter kedua dari UDF QUERY diurai oleh parser sintaks kueri HA3. Dalam sintaks kueri HA3, ketika parameter kedua adalah string konstan, perhatikan bahwa tanda petik tunggal di awal dan akhir harus dihilangkan saat dilewatkan ke kueri HA3. Misalnya, QUERY(title, 'Huawei phone OPPO phone') setara dengan kueri HA3 query=Huawei phone OPPO phone. Jika Anda perlu menambahkan tanda kutip di dalam deskripsi kueri, seperti string kueri HA3 query='Huawei phone' AND 'OPPO phone', bentuk ekuivalennya dalam UDF QUERY adalah QUERY(title, '''Huawei phone'' AND ''OPPO phone'''). Untuk catatan penggunaan tentang string konstan dalam deskripsi SQL, lihat bagian 'Constant strings' di [Limits].

  • Kesalahan umum:

  • Jenis kesalahan

    Bentuk salah

    Bentuk benar

    Kesalahan sintaks, kueri tidak mengembalikan hasil

    QUERY('pidvid','123:456')

    QUERY('pidvid','"123:456"')

rangevalue

  • Prototipe

    float rangevalue(float v, string desc)
  • Deskripsi

Memetakan nilai kontinu ke nilai diskrit.

  • Parameter

    Parameter v: Kolom nilai kontinu.

    Parameter desc: Aturan pemetaan.

  • Nilai kembali

    Nilai diskrit setelah pemetaan.

  • Contoh

    Gunakan rangevalue untuk memetakan nilai price: nilai kurang dari atau sama dengan 1000 dipetakan ke 1,0; nilai lebih dari 1000 dan kurang dari atau sama dengan 5000 dipetakan ke 2,0; dan nilai lainnya tetap menggunakan harga asli.

    SELECT rangevalue(price,'(,1000]:1.0;(1000,5000]:2.0') FROM phone;

range

  • Prototipe

    boolean range(INT v, const string rangeDesc)
    boolean range(FLOAT v, const string rangeDesc)
    boolean range(DOUBLE v, const string rangeDesc)
  • Deskripsi

Memeriksa apakah nilai bidang indeks maju berada dalam suatu interval.

  • Parameter

    Parameter v: Suatu bidang. Tipe numerik bernilai tunggal didukung.

    Parameter rangeDesc: Konstanta yang menjelaskan interval rentang numerik. Interval terbuka, tertutup, dan semi-terbuka didukung.

  • Nilai kembali

    Memeriksa apakah v berada dalam rentang yang dijelaskan oleh rangeDesc. Tabel berikut mencantumkan notasi yang didukung beserta nilai kembalinya.

Contoh notasi pemanggilan

Nilai kembali

range(v, "[0, 100]")

0<=v<=100

range(v, "(0, 100)")

0<v<100

range(v, "[0, 100)")

0<=v<100

range(v, "(0, 100]")

0<v<=100

range(v, "(0,)")

range(v, "(0,]")

0<v

range(v, "[0,)")

range(v, "[0,]")

0<=v

range(v, "(,100)")

range(v, "[,100)")

v<100

range(v, "(,100]")

range(v, "[,100]")

v<=100

range(v, "(,)")

range(v, "[,]")

range(v, "[,)")

range(v, "(,]")

true

Catatan: rangeDesc juga mendukung simbol "!" di awal baris untuk meniadakan interval yang dimaksud.

  • Contoh

    Gunakan range

    SELECT nid FROM phone where range(price,"(127.0,30.0)")
    SELECT nid FROM phone where range(price,"!(127.0,30.0)")

    Catatan: range adalah kata kunci yang dicadangkan dalam SQL dan harus di-escape.

normalizescore

  • Prototipe

    double normalizescore(INT v, const double defaultScore)
    double normalizescore(FLOAT v, const double defaultScore)
    double normalizescore(DOUBLE v, const double defaultScore)
  • Deskripsi

Menormalisasi bidang input v dan mengonversinya ke tipe double. Jika telah diinisialisasi, nilai asli dikembalikan; jika belum diinisialisasi, defaultScore dikembalikan.

  • Parameter

    Parameter v: Suatu bidang. Tipe numerik bernilai tunggal didukung.

    Parameter defaultScore: Deskripsi konstan yang harus berupa string yang dapat dikonversi ke tipe double yang valid.

  • Nilai kembali

    Jika v telah diinisialisasi, nilai asli dikembalikan; jika belum diinisialisasi, defaultScore dikembalikan.

  • Contoh

Untuk 3 dokumen yang memiliki bidang price, konten aslinya sebagai berikut:
doc1: price=1.0
doc2: price= (belum diinisialisasi)
doc3: price=2.0

Jalankan
select normalizescore(price, "1000.0") as normalized_score from phone

USE_TIME: 32.141ms, ROW_COUNT: 2

------------------------------- TABLE INFO ---------------------------
          normalized_score(double) |
                            1.0    |
                            1000.0 |
                            2.0.   |