Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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
Layanan Azure AI Search (tingkat apa pun). Buat layanan atau definisikan yang sudah ada.
Indeks pencarian dengan kolom string yang dikaitkan sebagai dapat dicari. Anda juga dapat menggunakan alias indeks sebagai titik akhir permintaan kueri Anda.
Izin untuk mengkueri indeks:
- autentikasi berbasis kunci: Kunci API kueri untuk layanan pencarian Anda.
- Autentikasi berbasis peran: Peran Pembaca Data Indeks Pencarian .
Untuk pengembangan SDK, instal pustaka klien Azure Search:
- Python: azure-search-documents
- .NET: Azure. Search.Documents
- JavaScript: @azure/search-documents
- Java: azure-search-documents
Tip
Untuk contoh kode cepat, lewati ke Contoh permintaan kueri teks lengkap.
Contoh permintaan kueri teks lengkap
Dalam Azure AI Search, kueri adalah permintaan baca-saja terhadap kumpulan dokumen dari satu indeks pencarian, dengan parameter yang menginformasikan eksekusi kueri dan membentuk respons yang diterima.
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 search dan parameter lainnya.
POST https://[service name].search.windows.net/indexes/hotels-sample/docs/search?api-version=2025-09-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
}
Referensi:Cari POST
Poin-poin penting
searchmenyediakan kriteria kecocokan, biasanya seluruh istilah atau frasa, dengan atau tanpa operator. Bidang apa pun yang diatribusikan sebagai dapat dicari dalam skema indeks berada dalam cakupan untuk operasi pencarian.queryTypemengatur pengurai: sederhana, penuh. Pengurai kueri sederhana default optimal untuk pencarian teks lengkap. Parser kueri Lucene lengkap digunakan untuk konstruksi kueri tingkat lanjut seperti ekspresi reguler, pencarian kedekatan, pencarian fuzzy, dan pencarian wildcard. Parameter ini juga dapat diatur ke semantik untuk peringkat semantik untuk pemodelan semantik tingkat lanjut pada respons kueri.searchModemenentukan apakah kecocokan didasarkan pada semua kriteria (mendukung presisi) atau kriteria apa pun (mendukung pengenalan) dalam ekspresi. Defaultnya adalah apa pun. Jika Anda mengantisipasi penggunaan operator Boolean yang berat, yang lebih mungkin dalam indeks yang berisi blok teks besar (bidang konten atau deskripsi panjang), pastikan untuk menguji kueri dengansearchMode=Any|Allparameter untuk mengevaluasi dampak pengaturan tersebut pada pencarian Boolean.searchFieldsmembatasi 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:
selectmenentukan bidang mana yang akan dikembalikan dalam respons. Hanya bidang yang ditandai sebagai dapat diambil dalam indeks yang dapat digunakan dalam pernyataan tertentu.topmengembalikan jumlah yang ditentukan dari dokumen yang paling cocok. Dalam contoh ini, hanya 10 hits yang dikembalikan. Anda bisa menggunakan "top" dan "skip" (tidak diperlihatkan) untuk menavigasi hasil halaman.countmemberi tahu Anda berapa banyak dokumen di seluruh indeks yang cocok secara keseluruhan, yang bisa lebih dari apa yang dikembalikan. Nilai yang valid adalah "true" atau "false". Secara bawaan adalah "false". Hitungan akurat jika indeks stabil, tetapi akan melaporkan kurang atau berlebihan pada dokumen apa pun yang ditambahkan, diperbarui, atau dihapus secara aktif. Jika Anda hanya ingin mendapatkan hitungan tanpa dokumen apa pun, Anda dapat menggunakan $top=0.orderbydigunakan 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 Azure portal atau klien REST atau Jupyter notebook. Pendekatan ini 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 SDK Azure untuk .NET, Java, JavaScript, dan Python.
Di portal Azure, saat membuka indeks, Anda dapat bekerja dengan Search Explorer bersama definisi JSON indeks di tab berdampingan untuk memudahkan akses atribut bidang. Periksa tabel Bidang untuk melihat tabel mana yang dapat dicari, dapat diurutkan, dapat difilter, dan dapat difaset saat menguji kueri.
Buka layanan pencarian Anda di portal Microsoft Azure.
Di layanan Anda, pilih Indeks dan pilih indeks.
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 }Referensi:Cari POST
Cuplikan layar berikut mengilustrasikan kueri dan respons:
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 mendukung operator pencarian umum (AND, OR, NOT) untuk pencarian istilah dan frasa, serta pencarian dengan awalan (
*seperti padasea*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=fullke permintaan, didasarkan pada Apache Lucene Parser.
Sintaks penuh dan sintaksis sederhana tumpang tindih hingga mendukung awalan dan operasi Boolean yang sama, tetapi sintaks penuh menyediakan lebih banyak operator. Ada lebih banyak operator untuk ekspresi Boolean, dan lebih banyak operator untuk kueri tingkat lanjut seperti pencarian fuzzy, pencarian wildcard, pencarian proksimitas, dan ekspresi reguler.
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.
| Masukan | Pengalaman |
|---|---|
| Metode pencarian | Pengguna mengetik istilah atau frasa ke dalam kotak pencarian, dengan atau tanpa operator, dan memilih 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. Respon adalah string lengkap dari indeks. Jika string yang disediakan valid, pengguna memilih 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 memilih satu dan dokumen yang cocok dikembalikan. |
| Navigasi tersaring | Halaman memperlihatkan tautan navigasi atau breadcrumbs yang dapat diklik guna mempersempit cakupan pencarian. Struktur navigasi bersegi disusun secara dinamis berdasarkan kueri awal. Misalnya, search=* untuk mengisi pohon navigasi tersaring yang terdiri dari setiap kategori yang bisa digunakan. Struktur navigasi beraspek dibuat dari respons kueri, tetapi juga merupakan mekanisme untuk menyampaikan kueri berikutnya. Dalam referensi REST API, facets didokumentasikan sebagai parameter kueri dari operasi Pencarian Dokumen, 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. Dalam referensi REST API, $filter didokumentasikan sebagai parameter kueri dari operasi Pencarian Dokumen, 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 dapat dicari dan dapat diambil yang dapat digunakan dalam kueri dan hasil pencarian. Saat mengatur parameter search, filter, dan orderby dalam permintaan Anda, Anda harus memeriksa atribut untuk menghindari hasil yang tidak terduga.
Dalam cuplikan layar indeks contoh hotel berikut, hanya dua bidang terakhir LastRenovationDate dan Peringkat yang dapat diurutkan, yang merupakan persyaratan untuk digunakan dalam klausul khusus "$orderby".
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. String atau kata majemuk biasanya dipisahkan menggunakan whitespace, tanda hubung, atau tanda pisah, dan diindeks sebagai token terpisah.
Poin utamanya 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 efek pada kueri, lihat Pencarian istilah parsial dan pola dengan karakter khusus.
Memecahkan masalah kueri
Tabel berikut ini mencantumkan masalah kueri umum dan cara mengatasinya.
| Masalah | Penyebab | Resolusi |
|---|---|---|
| Hasil kosong | Tidak ada dokumen yang cocok dengan kata kunci kueri. | Pastikan kolom ditandai dapat dicari dalam skema. Gunakan Analyze Text API untuk memeriksa tokenisasi. |
| Hasil yang tidak terduga | Kueri cocok dengan bidang yang tidak diinginkan. | Gunakan searchFields untuk membatasi bidang mana yang dicari. |
| Terlalu banyak hasil | Kueri terlalu luas. | Tambahkan filter, gunakan searchMode=all, atau tambahkan istilah yang diperlukan dengan + operator. |
| Hasil tidak diberi peringkat seperti yang diharapkan | Penilaian relevansi tidak sesuai dengan harapan. | Pertimbangkan profil penilaian atau peringkat semantik. |
| Kecocokan parsial hilang | Analyzer ditokenisasi secara berbeda dari yang diharapkan. | Gunakan akhiran wildcard (*) atau periksa hasil analisis dengan Analyze Text API. |
| Filter tidak berfungsi | Bidang tidak ditandai dapat difilter. | Perbarui skema indeks sehingga filterable: true diatur pada bidang. |
Konten terkait
Sekarang setelah Anda memiliki pemahaman yang lebih baik tentang cara kerja permintaan kueri, cobalah panduan cepat berikut ini untuk pengalaman praktis.