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 dan queryLanguage diatur ke bahasa yang didukung. Pemeriksaan ejaan berfungsi pada string yang diteruskan dalam search 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 kode yang telah Anda ubah untuk melakukan panggilan REST ke API pratinjau. Anda juga dapat menggunakan rilis versi beta dari SDK Azure.

Pustaka klien Versi
REST API Versi 2020-06-30-Preview dan yang lebih baru. Versi saat ini adalah 2023-10-01-Preview
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

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=2020-06-30-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=2020-06-30-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=2020-06-30-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.

Langkah berikutnya