FT.SEARCH - Amazon ElastiCache

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

FT.SEARCH

Melakukan pencarian indeks yang ditentukan. Kunci yang cocok dengan ekspresi kueri dikembalikan.

FT.SEARCH <index-name> <query> [NOCONTENT] [RETURN <token_count> (<field-identifier> [AS <alias>])+] [TIMEOUT timeout] [PARAMS <count> <name> <value> [<name> <value>]] [LIMIT <offset> <count>]
  • <index>(wajib): Nama indeks yang ingin Anda kueri.

  • <query>(wajib): String kueri, lihat di bawah untuk detailnya.

  • NOCONTENT (opsional): Saat ada, hanya nama kunci yang dihasilkan yang dikembalikan, tidak ada nilai kunci yang disertakan.

  • TIMEOUT <timeout>(opsional): Memungkinkan Anda menetapkan nilai batas waktu untuk perintah pencarian. Ini harus berupa bilangan bulat dalam milidetik.

  • <count><name1><value1><name2><value2>PARAMS... (opsional): count adalah jumlah argumen, yaitu dua kali jumlah pasangan nama nilai. Lihat string kueri untuk detail penggunaan.

  • KEMBALI <count><field1><field2>... (opsional): hitung adalah jumlah bidang yang akan dikembalikan. Menentukan bidang yang ingin Anda ambil dari dokumen Anda, bersama dengan alias apa pun untuk nilai yang dikembalikan. Secara default, semua bidang dikembalikan kecuali opsi NOCONTENT disetel, dalam hal ini tidak ada bidang yang dikembalikan. Jika hitungan disetel ke 0, ia berperilaku sama dengan NOCONTENT.

  • BATAS: <offset><count>: Memungkinkan Anda memilih sebagian dari hasil. <offset>Tombol pertama dilewati dan hanya maksimum <count>kunci yang disertakan. Defaultnya adalah LIMIT 0 10, yang mengembalikan paling banyak 10 kunci.

  • PARAMS: Dua kali jumlah pasangan nilai kunci. key/value Pasangan param dapat direferensikan dari dalam ekspresi kueri. Untuk informasi selengkapnya, lihat Ekspresi kueri penelusuran vektor.

  • DIALEK: <dialect>(opsional): Menentukan dialek Anda. Satu-satunya dialek yang didukung adalah 2.

RESPON

Perintah mengembalikan baik array jika berhasil atau kesalahan.

Setelah berhasil, entri pertama dalam array respons mewakili jumlah kunci yang cocok, diikuti oleh satu entri array untuk setiap kunci yang cocok. Perhatikan bahwa jika LIMIT opsi ditentukan, itu hanya akan mengontrol jumlah kunci yang dikembalikan dan tidak akan mempengaruhi nilai entri pertama.

Kapan NOCONTENT ditentukan, setiap entri dalam respons hanya berisi nama kunci yang cocok. Jika tidak, setiap entri menyertakan nama kunci yang cocok, diikuti oleh array bidang yang dikembalikan. Bidang hasil untuk kunci terdiri dari satu set name/value pasangan. name/value Pasangan pertama adalah untuk jarak yang dihitung. Nama pasangan ini dibangun dari nama bidang vektor yang ditambahkan dengan “__”, dan ditambahkan dengan “_score” dan nilainya adalah jarak yang dihitung. name/value Pasangan yang tersisa adalah anggota dan nilai kunci yang dikendalikan oleh RETURN klausa.

String kueri sesuai dengan sintaks ini:

<filtering>=>[ KNN <K> @<vector_field_name> $<vector_parameter_name> <query-modifiers> ]

Di mana:

  • <filtering>: Apakah ekspresi * atau filter. A * menunjukkan tidak ada penyaringan dan dengan demikian semua vektor dalam indeks dicari. Ekspresi filter dapat disediakan untuk menunjuk subset dari vektor yang akan dicari.

  • <vector_field_name>: Nama bidang vektor dalam indeks yang ditentukan.

  • <K>: Jumlah vektor tetangga terdekat yang akan dikembalikan.

  • <vector_parameter_name>: Nama PARAM yang nilainya sesuai menyediakan vektor kueri untuk algoritma KNN. Perhatikan bahwa parameter ini harus dikodekan sebagai floating point biner IEEE 754 32-bit dalam format endian kecil.

  • <query-modifiers>: (Opsional) Daftar keyword/value pasangan yang memodifikasi pencarian KNN khusus ini. Saat ini, dua kata kunci didukung:

    • EF_RUNTIME: Kata kunci ini disertai dengan nilai integer yang mengesampingkan nilai default EF_RUNTIME yang ditentukan saat indeks dibuat.

    • AS: Kata kunci ini disertai dengan nilai string yang menjadi nama bidang skor dalam hasilnya, mengesampingkan algoritme pembuatan nama bidang skor default.

Ekspresi filter

Ekspresi filter dibangun sebagai kombinasi logis dari Tag dan operator pencarian Numerik yang terkandung dalam tanda kurung.

Tag

Operator pencarian tag ditentukan dengan satu atau lebih string yang dipisahkan oleh karakter |. Kunci akan memuaskan operator pencarian tag jika bidang yang ditunjukkan berisi salah satu string yang ditentukan.

@<field_name>:{<tag>} or @<field_name>:{<tag1> | <tag2>} or @<field_name>:{<tag1> | <tag2> | ...}

Misalnya, kueri berikut akan mengembalikan dokumen dengan warna biru ATAU hitam ATAU hijau.

@color:{blue | black | green}

Sebagai contoh lain, query berikut akan mengembalikan dokumen yang berisi “hello world” atau “hello universe”.

@description:{hello world | hello universe}

Rentang numerik

Operator rentang numerik memungkinkan untuk memfilter kueri untuk hanya mengembalikan nilai yang berada di antara nilai awal dan akhir yang diberikan. Kueri jangkauan inklusif dan eksklusif didukung. Untuk perbandingan relasional sederhana, +inf, -inf dapat digunakan dengan kueri rentang. Sintaks untuk operator pencarian rentang adalah:

@<field_name>:[ [(] <bound> [(] <bound>]

... di mana <bound>adalah angka atau +inf atau -inf. Batas tanpa paren terbuka terkemuka bersifat inklusif, sedangkan batas dengan paren terbuka terkemuka bersifat eksklusif.

Gunakan tabel berikut sebagai panduan untuk memetakan ekspresi matematika untuk memfilter kueri:

min <= field <= max @field:[min max] min < field <= max @field:[(min max] min <= field < max @field:[min (max] min < field < max @field:[(min (max] field >= min @field:[min +inf] field > min @field:[(min +inf] field <= max @field:[-inf max] field < max @field:[-inf (max] field == val @field:[val val]

Operator logis

Beberapa tag dan operator pencarian numerik dapat digunakan untuk membangun kueri kompleks menggunakan operator logis.

Logis DAN

Untuk mengatur AND logis, gunakan spasi di antara predikat. Contoh:

query1 query2 query3

Logis ATAU

Untuk mengatur OR logis, gunakan spasi di antara predikat. Contoh:

query1 | query2 | query3

Negasi logis

Kueri apa pun dapat dinegasikan dengan mendahului - karakter sebelum setiap kueri. Kueri negatif mengembalikan semua entri yang tidak cocok dengan kueri. Ini juga termasuk kunci yang tidak memiliki bidang.

Misalnya, kueri negatif pada @genre: {comedy} akan mengembalikan semua buku yang bukan komedi DAN semua buku yang tidak memiliki bidang genre.

Kueri berikut akan mengembalikan semua buku dengan genre “komedi” yang tidak diterbitkan antara 2015 dan 2024, atau yang tidak memiliki bidang tahun: @genre: [komedi] - @year: [2015 2024]

Prioritas operator

Aturan prioritas operator tipikal berlaku, yaitu, negate logis adalah prioritas tertinggi, diikuti oleh logis DAN kemudian logis OR dengan prioritas terendah. Tanda kurung dapat digunakan untuk mengganti aturan prioritas default.

Contoh menggabungkan operator logis

Operator logika dapat digabungkan untuk membentuk ekspresi filter yang kompleks.

Pertanyaan berikut akan mengembalikan semua buku dengan genre “komedi” atau “horor” (AND) yang diterbitkan antara 2015 dan 2024: @genre:[comedy|horror] @year:[2015 2024]

Kueri berikut akan mengembalikan semua buku dengan genre “komedi” atau “horor” (OR) yang diterbitkan antara 2015 dan 2024: @genre:[comedy|horror] | @year:[2015 2024]

Kueri berikut akan mengembalikan semua buku yang tidak memiliki bidang genre, atau memiliki bidang genre yang tidak sama dengan “komedi”, yang diterbitkan antara 2015 dan 2024: -@genre:[comedy] @year:[2015 2024]