Menambahkan pemeriksaan ejaan ke kueri di Azure AI Search
Penting
Koreksi ejaan ada dalam pratinjau publik di bawah ketentuan penggunaan tambahan. Ini tersedia melalui portal Azure, pratinjau REST API, dan versi beta pustaka Azure SDK.
Anda dapat meningkatkan pengenalan dengan mengoreksi ejaan kata dalam kueri sebelum mencapai mesin pencari. Parameter speller
didukung untuk semua jenis kueri teks (non-vektor).
Prasyarat
Layanan pencarian di tingkat Dasar atau yang lebih tinggi, di wilayah mana pun.
Indeks pencarian yang sudah ada, dengan konten dalam bahasa yang didukung.
Permintaan kueri yang memiliki
speller=lexicon
danqueryLanguage
diatur ke bahasa yang didukung. Pemeriksaan ejaan berfungsi pada string yang diteruskan dalamsearch
parameter . Ini tidak didukung untuk filter, pencarian fuzzy, pencarian kartubebas, ekspresi reguler, atau kueri vektor.
Gunakan klien pencarian yang mendukung API pratinjau pada permintaan kueri. Anda dapat menggunakan klien REST atau rilis beta Azure SDK.
Pustaka klien | Versi |
---|---|
REST API | Versi 2020-06-30-Preview dan yang lebih baru. Kami merekomendasikan API pratinjau terbaru. Pratinjau 05-01 2024 |
Azure SDK untuk .NET | versi 11.5.0-beta.5 |
Azure SDK untuk Java | versi 11.6.0-beta.5 |
Azure SDK untuk JavaScript | versi 11.3.0-beta.8 |
SDK Azure untuk Python | versi 11.4.0b3 |
Koreksi ejaan dengan pencarian sederhana
Contoh berikut menggunakan indeks sampel hotel bawaan untuk menunjukkan koreksi ejaan pada kueri teks sederhana. Tanpa koreksi ejaan, kueri mengembalikan nol hasil. Dengan koreksi, kueri mengembalikan satu hasil untuk resor Johnson yang berorientasi keluarga.
POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2024-05-01-preview
{
"search": "famly acitvites",
"speller": "lexicon",
"queryLanguage": "en-us",
"queryType": "simple",
"select": "HotelId,HotelName,Description,Category,Tags",
"count": true
}
Koreksi ejaan dengan Lucene penuh
Koreksi ejaan terjadi pada istilah kueri individual yang mengalami analisis teks, itulah sebabnya Anda bisa menggunakan parameter ejaan dengan beberapa kueri Lucene, tetapi bukan yang lain.
- Formulir kueri yang tidak kompatibel yang melewati analisis teks meliputi: wildcard, regex, fuzzy
- Formulir kueri yang kompatibel meliputi: pencarian berbidang, kedekatan, peningkatan istilah
Contoh ini menggunakan pencarian berdasarkan bidang di atas bidang Kategori, dengan sintaks Lucene penuh, dan istilah kueri yang salah eja. Dengan menyertakan pengeja, kesalahan ketik pada "Suiite" diperbaiki dan kueri berhasil.
POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2024-05-01-preview
{
"search": "Category:(Resort and Spa) OR Category:Suiite",
"queryType": "full",
"speller": "lexicon",
"queryLanguage": "en-us",
"select": "Category",
"count": true
}
Koreksi ejaan dengan peringkat semantik
Kueri ini, dengan kesalahan ketik di setiap istilah kecuali satu, mengalami koreksi ejaan untuk mengembalikan hasil yang relevan. Untuk mempelajari selengkapnya, lihat Mengonfigurasi peringkat semantik.
POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2024-05-01-preview
{
"search": "hisotoric hotell wiht great restrant nad wiifi",
"queryType": "semantic",
"speller": "lexicon",
"queryLanguage": "en-us",
"searchFields": "HotelName,Tags,Description",
"select": "HotelId,HotelName,Description,Category,Tags",
"count": true
}
Bahasa yang didukung
Nilai yang valid untuk queryLanguage
dapat ditemukan dalam tabel berikut, disalin dari daftar bahasa yang didukung (referensi REST API).
Bahasa | queryLanguage |
---|---|
Inggris [EN] | EN, EN-US (default) |
Spanyol [ES] | ES, ES-ES (default) |
Prancis [FR] | FR, FR-FR (default) |
Jerman [DE] | DE, DE-DE (default) |
Belanda [NL] | NL, NL-BE, NL-NL (default) |
Catatan
Sebelumnya, saat peringkat semantik berada di pratinjau publik, queryLanguage
parameter juga digunakan untuk peringkat semantik. Peringkat semantik sekarang bersifat agnostik bahasa.
Pertimbangan penganalisis bahasa
Indeks yang berisi konten non-Bahasa Inggris sering menggunakan penganalisis bahasa pada bidang non-Bahasa Inggris untuk menerapkan aturan linguistik bahasa asli.
Saat menambahkan pemeriksaan ejaan ke konten yang juga mengalami analisis bahasa, Anda dapat mencapai hasil yang lebih baik menggunakan bahasa yang sama untuk setiap langkah pengindeksan dan pemrosesan kueri. Misalnya, jika konten bidang diindeks menggunakan penganalisis bahasa "fr.microsoft", kueri dan pemeriksaan ejaan semuanya harus menggunakan leksikon Prancis atau pustaka bahasa dari beberapa formulir.
Untuk merangkum bagaimana pustaka bahasa digunakan dalam Azure AI Search:
Penganalisis bahasa dapat digunakan selama pengindeksan dan eksekusi kueri, dan dapat berupa Apache Lucene (misalnya, "de.lucene") atau Microsoft ("de.microsoft).
Leksikon bahasa yang dipanggil selama pemeriksaan ejaan ditentukan menggunakan salah satu kode bahasa dalam tabel bahasa yang didukung.
Dalam permintaan kueri, nilai yang ditetapkan untuk queryLanguage
diterapkan ke speller
.
Catatan
Konsistensi bahasa di berbagai nilai properti hanya menjadi perhatian jika Anda menggunakan penganalisis bahasa. Jika Anda menggunakan penganalisis bahasa-agnostik (seperti kata kunci, sederhana, standar, berhenti, spasi kosong, atau standardasciifolding.lucene
), maka queryLanguage
nilainya bisa menjadi apa pun yang Anda inginkan.
Meskipun konten dalam indeks pencarian dapat disusun dalam beberapa bahasa, input kueri kemungkinan besar dalam satu bahasa. Mesin pencari tidak memeriksa kompatibilitas queryLanguage
, penganalisis bahasa, dan bahasa tempat konten disusun, jadi pastikan untuk mencakup kueri yang sesuai untuk menghindari menghasilkan hasil yang salah.