Membuat kueri teks lengkap di Azure AI Search

Jika Anda membuat kueri untuk pencarian teks lengkap, artikel ini menyediakan langkah-langkah untuk menyiapkan permintaan. Ini juga memperkenalkan struktur kueri, dan menjelaskan bagaimana atribut bidang dan penganalisis linguistik dapat memengaruhi hasil kueri.

Prasyarat

  • Indeks pencarian dengan bidang string yang diatribusikan sebagai searchable.

  • Izin baca pada indeks pencarian. Untuk akses baca, sertakan kunci API kueri pada permintaan, atau berikan izin Pembaca Data Indeks Pencarian pemanggil.

Contoh permintaan kueri teks lengkap

Di Azure AI Search, kueri adalah permintaan baca-saja terhadap kumpulan dokumen dari satu indeks pencarian, dengan parameter yang menginformasikan eksekusi kueri dan membentuk respons kembali.

Kueri teks lengkap ditentukan dalam search parameter dan terdiri dari istilah, frasa yang diapit kutipan, dan operator. Parameter lain menambahkan lebih banyak definisi ke permintaan.

Panggilan Search POST REST API berikut mengilustrasikan permintaan kueri menggunakan parameter yang disebutkan di atas.

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2023-11-01
{
    "search": "NY +view",
    "queryType": "simple",
    "searchMode": "all",
    "searchFields": "HotelName, Description, Address/City, Address/StateProvince, Tags",
    "select": "HotelName, Description, Address/City, Address/StateProvince, Tags",
    "top": "10",
    "count": "true"
}

Poin utama:

  • search menyediakan kriteria kecocokan, biasanya seluruh istilah atau frasa, dengan atau tanpa operator. Bidang apa pun yang dikaitkan sebagai "dapat dicari" dalam skema indeks adalah kandidat untuk parameter ini.

  • queryType mengatur pengurai: simple, full. Pengurai kueri sederhana default optimal untuk pencarian teks lengkap. Parser kueri Lucene lengkap adalah untuk konstruksi kueri tingkat lanjut seperti ekspresi reguler, pencarian kedekatan, pencarian fuzzy dan wildcard. Parameter ini juga dapat diatur ke semantic untuk peringkat semantik untuk pemodelan semantik tingkat lanjut pada respons kueri.

  • searchMode menentukan apakah kecocokan didasarkan pada kriteria "semua" (mendukung presisi) atau kriteria "apa pun" (mendukung pengenalan) dalam ekspresi. Defaultnya adalah "any". Jika Anda mengantisipasi penggunaan operator Boolean yang berlebihan, yang lebih mungkin dalam indeks yang berisi blok teks besar (bidang konten atau deskripsi panjang), pastikan untuk menguji kueri dengan searchMode=Any|All parameter untuk mengevaluasi dampak pengaturan tersebut pada pencarian boolean.

  • searchFields membatasi eksekusi kueri ke bidang tertentu yang dapat dicari. Selama pengembangan, sangat berguna untuk menggunakan daftar bidang yang sama untuk memilih dan mencari. Jika tidak, kecocokan mungkin didasarkan pada nilai bidang yang tidak dapat Anda lihat dalam hasil, menciptakan ketidakpastian mengapa dokumen dikembalikan.

Parameter yang digunakan untuk membentuk respons:

  • select menentukan bidang mana yang akan dikembalikan dalam respons. Hanya bidang yang ditandai sebagai "dapat diambil" dalam indeks yang dapat digunakan dalam pernyataan pilih.

  • top mengembalikan jumlah dokumen yang paling cocok. Dalam contoh ini, hanya 10 hits yang dikembalikan. Anda bisa menggunakan atas dan lewatkan (tidak diperlihatkan) ke halaman hasilnya.

  • count memberi tahu Anda berapa banyak dokumen di seluruh indeks yang cocok secara keseluruhan, yang bisa lebih dari apa yang dikembalikan.

  • orderby digunakan jika Anda ingin mengurutkan hasil menurut nilai, seperti peringkat atau lokasi. Jika tidak, defaultnya adalah menggunakan skor relevansi untuk memberi peringkat hasil. Bidang harus dikaitkan sebagai "dapat diurutkan" untuk menjadi kandidat untuk parameter ini.

Memilih klien

Untuk pengembangan awal dan pengujian bukti konsep, mulailah dengan portal Azure atau klien REST. Kedua pendekatan interaktif, berguna untuk pengujian yang ditargetkan, dan membantu Anda menilai efek properti yang berbeda tanpa harus menulis kode apa pun.

Untuk memanggil pencarian dari dalam aplikasi, gunakan pustaka klien Azure.Document.Search di Azure SDK untuk .NET, Java, JavaScript, dan Python.

Di portal, saat membuka indeks, Anda dapat bekerja dengan Penjelajah Pencarian beserta keterangan indeks JSON di tab yang berdampingan untuk akses mudah ke atribut bidang. Periksa tabel Bidang untuk melihat tabel mana yang dapat dicari, dapat diurutkan, dapat difilter, dan dapat difaset saat menguji kueri.

  1. Masuk ke portal Azure dan temukan layanan pencarian Anda.

  2. Buka Indeks dan pilih indeks.

  3. Indeks terbuka ke tab Penjelajah pencarian sehingga Anda bisa langsung mengkueri. Beralih ke tampilan JSON untuk menentukan sintaks kueri.

    Berikut adalah ekspresi kueri pencarian teks lengkap yang berfungsi untuk indeks sampel Hotel:

       {
           "search": "pool spa +airport",
           "queryType": "simple",
           "searchMode": "any",
           "searchFields": "Description, Tags",
           "select": "HotelName, Description, Tags",
           "top": 10,
           "count": true
       }
    

    Cuplikan layar berikut mengilustrasikan kueri dan respons:

    Screenshot of Search Explorer with a full text query.

Pilih jenis kueri: sederhana | penuh

Jika kueri Anda adalah pencarian teks lengkap, pengurai kueri digunakan untuk memproses teks apa pun yang diteruskan sebagai istilah pencarian dan frasa. Azure AI Search menawarkan dua pengurai kueri.

  • Parser sederhana memahami sintaks kueri sederhana. Parser ini dipilih sebagai default karena kecepatan dan efektivitasnya dalam kueri teks bentuk bebas. Sintaks ini mendukung operator pencarian umum (AND, OR, NOT) untuk pencarian istilah dan frasa, dan prefiks pencarian (*) (seperti pada "sea*" untuk Seattle dan Seaside). Rekomendasi umum yang disarankan adalah dengan mencoba parser sederhana terlebih dahulu, dan kemudian beralih ke parser penuh jika persyaratan aplikasi membutuhkan kueri yang lebih kuat.

  • Sintaks kueri Lucene lengkap, diaktifkan saat Anda menambahkan queryType=full ke permintaan, didasarkan pada Apache Lucene Parser.

Sintaks penuh dan sintaks sederhana tumpang tindih hingga keduanya mendukung prefiks dan operasi boolean yang sama, tetapi sintaks penuh menyediakan lebih banyak operator. Secara penuh, ada lebih banyak operator untuk ekspresi boolean, dan lebih banyak operator untuk kueri lanjutan seperti pencarian fuzzy, pencarian wildcard, pencarian terdekat, dan regex.

Pilih metode kueri

Pencarian pada dasarnya adalah latihan berbasis pengguna, di mana istilah atau frasa dikumpulkan dari kotak pencarian, atau dari kejadian klik pada halaman. Tabel berikut ini merangkum mekanisme yang dapat digunakan untuk mengumpulkan input pengguna, beserta pengalaman pencarian yang diharapkan.

Input Pengalaman
Metode pencarian Pengguna mengetik istilah atau frasa ke dalam kotak pencarian, dengan atau tanpa operator, dan mengklik Cari untuk mengirim permintaan. Pencarian dapat digunakan dengan filter pada permintaan yang sama, tetapi tidak berlaku pada lengkapi otomatis atau saran.
Metode lengkapi otomatis Pengguna mengetik beberapa karakter, dan kueri dimulai setelah setiap karakter baru diketik. Responsnya adalah untai (karakter) yang diselesaikan dari indeks. Jika untai (karakter) yang disediakan valid, pengguna mengklik Cari untuk mengirim kueri tersebut ke layanan.
Metode saran Seperti halnya lengkapi otomatis, pengguna mengetik beberapa karakter dan kueri inkremental akan dihasilkan. Responsnya adalah daftar dropdown dokumen yang cocok, biasanya diwakili oleh beberapa bidang unik atau deskriptif. Jika salah satu pilihan valid, pengguna mengklik satu pilihan dan dokumen yang cocok dikembalikan.
Navigasi tersaring Halaman memperlihatkan tautan navigasi atau breadcrumbs yang dapat diklik guna mempersempit cakupan pencarian. Struktur navigasi tersaring disusun secara dinamis berdasarkan kueri awal. Misalnya, search=* untuk mengisi pohon navigasi tersaring yang terdiri dari setiap kategori yang bisa digunakan. Struktur navigasi tersaring dibuat dari respons kueri, tetapi juga merupakan mekanisme untuk mengekspresikan kueri berikutnya. Referensi n REST API, facets didokumentasikan sebagai parameter kueri dari operasi Dokumen Pencarian, tetapi dapat digunakan tanpa parameter search.
Metode filter Filter digunakan dengan faset untuk mempersempit hasil. Anda juga dapat menerapkan filter di belakang halaman, misalnya untuk menginisialisasi halaman dengan bidang khusus bahasa. Di referensi n REST API, $filter didokumentasikan sebagai parameter kueri dari operasi Dokumen Pencarian, tetapi dapat digunakan tanpa parameter search.

Efek atribut bidang pada kueri

Jika Anda terbiasa dengan jenis dan komposisi kueri, Anda mungkin ingat bahwa parameter pada permintaan kueri bergantung pada atribut bidang dalam indeks. Misalnya, hanya bidang yang ditandai sebagai searchable dan retrievable dapat digunakan dalam kueri dan hasil pencarian. Saat mengatur searchparameter , filter, dan orderby dalam permintaan Anda, Anda harus memeriksa atribut untuk menghindari hasil yang tidak terduga.

Dalam cuplikan layar portal di bawah indeks sampel hotel, hanya dua bidang terakhir "LastRenovationDate" dan "Rating" adalah sortable, persyaratan untuk digunakan dalam satu-satunya "$orderby" klausul.

Index definition for the hotel sample

Untuk definisi atribut bidang, lihat Membuat Indeks (REST API).

Efek token pada kueri

Selama pengindeksan, mesin pencari menggunakan penganalisis teks pada string untuk memaksimalkan potensi untuk menemukan kecocokan pada waktu kueri. Minimal, string berukuran lebih rendah, tetapi tergantung pada penganalisis, mungkin juga mengalami lemmatisasi dan menghentikan penghapusan kata. untai (karakter) atau kata majemuk yang lebih besar biasanya dipasahkan menggunakan whitespace, tanda hubung, atau garis putus-putus, dan diindeks sebagai token terpisah.

Inti untuk mengambil di sini adalah bahwa apa yang Anda pikir indeks Anda berisi, dan apa yang sebenarnya ada di dalamnya, bisa berbeda. Jika kueri tidak mengembalikan hasil yang diharapkan, Anda dapat memeriksa token yang dibuat oleh penganalisis melalui Analyze Text (REST API). Untuk informasi selengkapnya tentang tokenisasi dan dampaknya pada kueri, lihat Pencarian dan pola istilah parsial dengan karakter khusus.

Langkah berikutnya

Sekarang setelah Anda memiliki pemahaman yang lebih baik tentang cara kerja permintaan kueri, cobalah mulai cepat berikut ini untuk pengalaman langsung.