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.
Catatan
Pencarian Azure AI tersedia melalui portal Azure, REST API, dan Azure SDK. Ini juga mendukung Foundry IQ, lapisan pengetahuan terkelola yang mengubah konten perusahaan menjadi pangkalan pengetahuan yang dapat digunakan kembali dan sadar izin untuk agen di portal Microsoft Foundry.
Pencarian Azure AI mendukung pencarian fuzzy, jenis kueri yang mengkompensasi kesalahan ketik dan istilah yang salah eja dalam string input. Pencarian fuzzy memindai istilah yang memiliki komposisi serupa. Memperluas pencarian untuk mencakup kemiripan yang dekat memiliki efek koreksi otomatis kesalahan ketik ketika perbedaan hanya berupa beberapa karakter yang salah penempatan.
Apa itu pencarian fuzzy?
Ini adalah latihan ekspansi kueri yang menghasilkan kecocokan dengan istilah yang memiliki komposisi yang sama. Ketika pencarian fuzzy ditentukan, mesin pencari membangun grafik (berdasarkan teori automaton terbatas deterministik) dari istilah yang disusun serupa, untuk semua istilah dalam kueri. Misalnya, jika kueri Anda menyertakan tiga istilah "university of washington", grafik dibuat untuk setiap istilah dalam kueri search=university~ of~ washington~ (tidak ada penghapusan kata berhenti dalam pencarian fuzzy, jadi "of" mendapatkan grafik).
Grafik terdiri dari hingga 50 ekspansi, atau permutasi, dari setiap istilah, menangkap varian yang benar dan salah dalam prosesnya. Mesin kemudian mengembalikan kecocokan paling relevan dalam respons.
Untuk istilah seperti "universitas", grafik mungkin memiliki "unversty, universty, university, universe, inverse". Dokumen apa pun yang cocok dengan dokumen yang ada di grafik disertakan dalam hasil. Berbeda dengan kueri lain yang menganalisis teks untuk mengatasi berbagai bentuk kata yang sama ("mice" dan "mouse"), perbandingan dalam kueri fuzzy diambil apa adanya tanpa analisis linguistik pada teks. "Universe" dan "inverse", yang secara semantik berbeda, mirip karena perbedaan sintaksis kecil.
Kecocokan berhasil jika perbedaan dibatasi pada dua atau lebih sedikit pengeditan, di mana pengeditan adalah karakter yang disisipkan, dihapus, diganti, atau diubah urutannya. Algoritma koreksi string yang menentukan diferensial adalah metrik jarakDamerau-Levenshtein . Ini digambarkan sebagai "jumlah minimum operasi (penyisipan, penghapusan, substitusi, atau transposisi dua karakter yang berdekatan) yang diperlukan untuk mengubah satu kata ke kata lainnya".
Dalam Pencarian Azure AI:
Kueri fuzzy berlaku untuk seluruh istilah. Frasa tidak didukung secara langsung tetapi Anda dapat menentukan kecocokan fuzzy pada setiap istilah frasa multi-bagian melalui konstruksi AND. Contohnya,
search=dr~ AND cleanin~. Ekspresi kueri ini menemukan kecocokan pada "cuci kering".Jarak default pengeditan adalah 2. Nilai
~0menandakan tidak ada ekspansi (hanya istilah yang tepat yang dianggap sebagai kecocokan), tetapi Anda dapat menentukan~1untuk satu tingkat perbedaan, atau satu pengeditan.Kueri fuzzy dapat memperluas istilah hingga 50 permutasi. Batas ini tidak dapat dikonfigurasi, tetapi Anda dapat secara efektif mengurangi jumlah ekspansi dengan mengurangi jarak edit menjadi 1.
Tanggapan terdiri dari dokumen yang berisi kecocokan yang relevan (hingga 50).
Selama pemrosesan kueri, kueri fuzzy tidak menjalani analisis leksikal. Masukan kueri ditambahkan langsung ke pohon kueri dan diperluas untuk membuat grafik istilah. Satu-satunya transformasi yang dilakukan adalah selubung yang lebih rendah.
Secara kolektif, grafik diajukan sebagai kriteria pertandingan terhadap token dalam indeks. Seperti yang dapat Anda bayangkan, pencarian fuzzy secara inheren lebih lambat daripada formulir kueri lainnya. Ukuran dan kompleksitas indeks Anda dapat menentukan apakah manfaatnya cukup untuk mengimbangi latensi respons.
Catatan
Karena pencarian fuzzy cenderung lambat, mungkin ada baiknya untuk menyelidiki alternatif seperti pengindeksan n-gram, dengan perkembangan urutan karakter pendek (urutan dua dan tiga karakter untuk token bigram dan trigram). Bergantung pada bahasa dan antarmuka kueri Anda, n-gram mungkin memberi Anda performa yang lebih baik. Komprominya adalah bahwa pengindeksan n-gram memerlukan banyak ruang penyimpanan dan menghasilkan indeks yang jauh lebih besar.
Alternatif lain, yang dapat Anda pertimbangkan jika Anda ingin menangani hanya kasus yang paling mengerikan, akan menjadi peta sinonim. Misalnya, memetakan "search" ke "serach, serch, sarch", atau "retrieve" ke "retreive".
Pengindeksan untuk pencarian fuzzy
Bidang string yang dikaitkan sebagai "dapat dicari" adalah kandidat untuk pencarian fuzzy.
Penganalisis tidak digunakan untuk membuat grafik ekspansi, tetapi itu tidak berarti penganalisis harus diabaikan dalam skenario pencarian fuzzy. Penganalisis penting untuk tokenisasi selama pengindeksan, di mana token dalam indeks terbalik digunakan untuk pencocokan terhadap grafik.
Seperti biasa, jika kueri pengujian tidak menghasilkan kecocokan yang Anda harapkan, bereksperimenlah dengan penganalisis pengindeksan yang berbeda. Misalnya, coba penganalisis bahasa untuk melihat apakah Anda mendapatkan hasil yang lebih baik. Beberapa bahasa, khususnya yang memiliki mutasi vokal, dapat memanfaatkan bentuk kata infleksi dan bentuk kata tidak beraturan yang dihasilkan oleh prosesor bahasa alami Microsoft. Dalam beberapa kasus, menggunakan penganalisis bahasa yang tepat dapat membuat perbedaan dalam apakah istilah ditokenisasi dengan cara yang kompatibel dengan nilai yang disediakan oleh pengguna.
Cara mengaktifkan pencarian fuzzy
Kueri fuzzy dibangun menggunakan sintaks kueri Lucene lengkap, memanggil pengurai kueri Lucene lengkap, dan menambahkan karakter ~ tilde setelah setiap istilah yang dimasukkan oleh pengguna.
Berikut adalah contoh permintaan kueri yang memanggil pencarian fuzzy. Ini termasuk empat istilah, dua di antaranya salah eja:
POST https://[service name].search.windows.net/indexes/hotels-sample/docs/search?api-version=2026-04-01
{
"search": "seatle~ waterfront~ view~ hotle~",
"queryType": "full",
"searchMode": "any",
"searchFields": "HotelName, Description",
"select": "HotelName, Description, Address/City",
"count": true
}
Atur jenis kueri ke sintaks Lucene lengkap (
queryType=full).Berikan string kueri di mana setiap istilah diikuti oleh operator tilde (
~) di akhir setiap istilah keseluruhan (search=<string>~). Grafik ekspansi dibuat untuk setiap istilah dalam input kueri.Sertakan parameter opsional, angka antara 0 dan 2 (default), jika Anda ingin menentukan jarak edit (
~1). Misalnya, "blue~" atau "blue~1" dapat mengembalikan "blue", "blues", dan "glue".
Secara opsional, Anda dapat meningkatkan performa kueri dengan mencakup permintaan ke bidang tertentu.
searchFields Gunakan parameter untuk menentukan bidang mana yang akan dicari. Anda juga bisa menggunakan select properti untuk menentukan bidang mana yang dikembalikan dalam respons kueri.
Menguji pencarian fuzzy
Untuk pengujian sederhana, sebaiknya gunakan Penjelajah Pencarian atau klien REST untuk melakukan iterasi pada ekspresi kueri. Kedua alat ini interaktif, yang berarti Anda dapat dengan cepat melangkah melalui beberapa varian istilah dan mengevaluasi respons yang kembali.
Saat hasilnya ambigu, penyorotan hasil dapat membantu Anda mengidentifikasi kecocokan dalam respons.
Catatan
Penggunaan penyorotan hit untuk mengidentifikasi kecocokan fuzzy memiliki keterbatasan dan hanya berfungsi untuk pencarian fuzzy dasar. Jika indeks Anda memiliki profil penilaian, atau jika Anda menambahkan lebih banyak sintaks pada kueri, penyorotan hasil mungkin gagal mengidentifikasi kecocokan.
Contoh 1: pencarian fuzzy dengan istilah tepat
Asumsikan string berikut ada di "Description" bidang dalam dokumen pencarian: "Test queries with special characters, plus strings for MSFT, SQL and Java."
Mulai dengan pencarian fuzzy pada "khusus" dan tambahkan penyorotan hasil ke bidang Deskripsi.
search=special~&highlight=Description
Dalam respons, karena Anda menambahkan penyorotan klik, pemformatan diterapkan ke "khusus" sebagai istilah yang cocok.
"@search.highlights": {
"Description": [
"Test queries with <em>special</em> characters, plus strings for MSFT, SQL and Java."
]
}
Coba ulangi permintaannya, salah mengeja "khusus" dengan menghilangkan beberapa huruf ("pe"):
search=scial~&highlight=Description
Sejauh ini, tidak ada perubahan pada respons. Mengingat default jarak 2 derajat, menghapus dua karakter "pe" dari "special" masih memungkinkan terjadinya kecocokan yang berhasil pada istilah tersebut.
"@search.highlights": {
"Description": [
"Test queries with <em>special</em> characters, plus strings for MSFT, SQL and Java."
]
}
Mencoba permintaan sekali lagi, ubah istilah pencarian dengan menghapus satu karakter terakhir sehingga menjadi total tiga penghapusan, contohnya dari "khusus" menjadi "scal".
search=scal~&highlight=Description
Respon yang sama dikembalikan, tetapi kini, alih-alih mencocokkan dengan "khusus", pencocokan fuzzy dilakukan pada "SQL".
"@search.score": 0.4232868,
"@search.highlights": {
"Description": [
"Mix of special characters, plus strings for MSFT, <em>SQL</em>, 2019, Linux, Java."
]
}
Inti dari contoh yang diperluas ini adalah untuk menunjukkan seberapa besar kejelasan yang dapat diberikan oleh penyorotan hasil pada hasil yang ambigu. Dalam semua kasus, dokumen yang sama dikembalikan. Jika Anda mengandalkan ID dokumen untuk memverifikasi kecocokan, Anda mungkin melewatkan pergeseran dari "khusus" ke "SQL".