Sinonim di Azure AI Search

Pada layanan pencarian, peta sinonim adalah sumber daya global yang mengaitkan istilah yang setara, memperluas cakupan kueri tanpa pengguna harus benar-benar memberikan istilah. Misalnya, dengan asumsi "anjing" dan "anak anjing" adalah sinonim, kueri tentang "anak anjing" akan cocok pada dokumen yang berisi "anjing".

Membuat sinonim

Peta sinonim adalah aset yang dapat dibuat sekali dan digunakan oleh banyak indeks. Tingkat layanan menentukan berapa banyak peta sinonim yang dapat Anda buat, mulai dari tiga peta sinonim untuk tingkat Gratis dan Dasar, hingga 20 untuk tingkat Standar.

Anda dapat membuat beberapa peta sinonim untuk berbagai bahasa, seperti versi bahasa Inggris dan Prancis, atau leksikon jika konten Anda menyertakan jargon teknis, bahasa slang, atau terminologi yang tidak jelas. Meskipun Anda dapat membuat beberapa peta sinonim di layanan pencarian Anda, dalam indeks, definisi bidang hanya dapat memiliki satu penetapan peta sinonim.

Peta sinonim terdiri dari nama, format, dan aturan yang berfungsi sebagai entri peta sinonim. Satu-satunya format yang didukung adalah solr, dan format solr menentukan konstruksi aturan.

POST /synonymmaps?api-version=2023-11-01
{
    "name": "geo-synonyms",
    "format": "solr",
    "synonyms": "
        USA, United States, United States of America\n
        Washington, Wash., WA => WA\n"
}

Untuk membuat peta sinonim, lakukan secara terprogram (portal tidak mendukung definisi peta sinonim):

Menentukan aturan

Aturan pemetaan mematuhi spesifikasi filter sinonim sumber terbuka Apache Solr, yang dijelaskan dalam dokumen ini: SynonymFilter. Format ini solr mendukung dua jenis aturan:

  • kesetaraan (di mana istilah sama dengan pengganti dalam kueri)

  • pemetaan eksplisit (di mana istilah dipetakan ke satu istilah eksplisit sebelum kueri)

Setiap aturan harus dibatasi oleh karakter baris baru (\n). Anda dapat menentukan hingga 5.000 aturan per peta sinonim dalam layanan gratis dan 20.000 aturan per peta di tingkat lain. Setiap aturan dapat memiliki hingga 20 ekspansi (atau item dalam aturan). Untuk informasi selengkapnya, lihat Batas sinonim.

Pengurai kueri secara otomatis menurunkan huruf besar atau campuran istilah, tetapi jika Anda ingin mempertahankan karakter khusus dalam string, seperti koma atau tanda hubung, tambahkan karakter escape yang sesuai saat membuat peta sinonim.

Aturan kesetaraan

Aturan untuk istilah yang setara dibatasi koma dalam aturan yang sama. Dalam contoh pertama, kueri tentang USA diperluas ke USA OR "United States" ATAU "United States of America". Perhatikan bahwa jika Anda ingin mencocokkan pada frasa, kueri itu sendiri harus menjadi kueri frasa yang diapit kutipan.

Dalam kasus kesetaraan, kueri untuk dog memperluas kueri untuk juga menyertakan puppy dan canine.

{
"format": "solr",
"synonyms": "
    USA, United States, United States of America\n
    dog, puppy, canine\n
    coffee, latte, cup of joe, java\n"
}

Pemetaan eksplisit

Aturan untuk pemetaan eksplisit ditandai dengan panah =>. Saat ditentukan, urutan istilah kueri pencarian yang cocok dengan sisi => kiri diganti dengan alternatif di sisi kanan pada waktu kueri.

Dalam kasus eksplisit, kueri untuk , atau ditulis ulang sebagai WA, dan mesin kueri hanya mencari kecocokan pada istilah WA.WAWash.Washington Pemetaan eksplisit hanya berlaku dalam arah yang ditentukan, dan tidak menulis ulang kueri WA dalam Washington kasus ini.

{
"format": "solr",
"synonyms": "
    Washington, Wash., WA => WA\n
    California, Calif., CA => CA\n"
}

Pelepasan karakter khusus

Dalam pencarian teks lengkap, sinonim dianalisis selama pemrosesan kueri seperti istilah kueri lainnya, yang berarti bahwa aturan seputar karakter yang dicadangkan dan khusus berlaku untuk istilah dalam peta sinonim Anda. Daftar karakter yang membutuhkan escape bervariasi antara sintaks sederhana dan sintaks lengkap:

Ingat bahwa jika Anda perlu mempertahankan karakter yang seharusnya dibuang oleh penganalisis default selama pengindeksan, Anda harus mengganti penganalisis yang mempertahankannya. Beberapa pilihan termasuk Penganalisis bahasa alami Microsoft, yang mempertahankan kata-kata yang dipenggal, atau penganalisis kustom untuk pola yang lebih kompleks. Untuk informasi selengkapnya, lihat Istilah parsial, pola, dan karakter khusus.

Contoh berikut menunjukkan contoh cara melakukan escape karakter dengan garis miring terbalik:

{
    "format": "solr",
    "synonyms": "WA\, USA, WA, Washington\n"
}

Karena garis miring terbelakang itu sendiri adalah karakter khusus dalam bahasa lain seperti JSON dan C#, Anda mungkin perlu melepaskannya kembali. Misalnya, JSON yang dikirim ke REST API untuk peta sinonim di atas akan terlihat seperti ini:

{
    "format":"solr",
    "synonyms": "WA\\, USA, WA, Washington"
}

Mengunggah dan mengelola peta sinonim

Seperti disebutkan sebelumnya, Anda dapat membuat atau memperbarui peta sinonim tanpa mengganggu beban kerja kueri dan pengindeksan. Peta sinonim adalah objek mandiri (seperti indeks atau sumber data), dan selama tidak ada bidang yang menggunakannya, pembaruan tidak akan menyebabkan pengindeksan atau kueri gagal. Namun, setelah Anda menambahkan peta sinonim ke definisi bidang, jika Anda kemudian menghapus peta sinonim, kueri apa pun yang menyertakan bidang yang dimaksud akan gagal dengan menampilkan kesalahan 404.

Membuat, memperbarui, dan menghapus peta sinonim selalu merupakan operasi seluruh dokumen, yang berarti Anda tidak dapat memperbarui atau menghapus bagian peta sinonim secara bertahap. Hanya memperbarui satu aturan pun memerlukan pemuatan ulang.

Menetapkan sinonim ke bidang

Setelah mengunggah peta sinonim, Anda dapat mengaktifkan sinonim pada bidang jenis Edm.String atau Collection(Edm.String), pada bidang yang memiliki "searchable":true. Seperti yang diketahui, definisi bidang hanya dapat menggunakan satu peta sinonim.

POST /indexes?api-version=2020-06-30
{
    "name":"hotels-sample-index",
    "fields":[
        {
            "name":"description",
            "type":"Edm.String",
            "searchable":true,
            "synonymMaps":[
            "en-synonyms"
            ]
        },
        {
            "name":"description_fr",
            "type":"Edm.String",
            "searchable":true,
            "analyzer":"fr.microsoft",
            "synonymMaps":[
            "fr-synonyms"
            ]
        }
    ]
}

Kueri pada bidang yang setara atau dipetakan

Menambahkan sinonim tidak memberlakukan persyaratan baru pada konstruksi kueri. Anda dapat membuat kueri istilah dan frasa seperti yang Anda lakukan sebelum penambahan sinonim. Satu-satunya perbedaan adalah jika istilah kueri ada di peta sinonim, mesin kueri akan memperluas atau menulis ulang istilah atau frasa, bergantung pada aturan.

Bagaimana sinonim digunakan selama eksekusi kueri

Sinonim adalah teknik perluasan kueri yang melengkapi konten indeks dengan istilah yang setara, tetapi hanya untuk bidang yang memiliki penetapan sinonim. Jika kueri lingkup bidang mengecualikan bidang yang mendukung sinonim, Anda tidak akan melihat kecocokan dari peta sinonim.

Untuk bidang yang diaktifkan sinonim, sinonim tunduk pada analisis teks yang sama dengan bidang terkait. Misalnya, jika bidang dianalisis menggunakan penganalisis Lucene standar, istilah sinonim juga akan tunduk pada penganalisis Lucene standar pada waktu kueri. Jika Anda ingin mempertahankan tanda baca, seperti titik atau tanda hubung, dalam istilah sinonim, terapkan penganalisis yang mempertahankan konten di bidang.

Secara internal, fitur sinonim menulis ulang kueri asli dengan sinonim dengan operator OR. Untuk alasan ini, profil penyorotan dan penilaian hit memperlakukan istilah asli dan sinonim dengan setara.

Sinonim hanya berlaku untuk kueri teks bentuk bebas dan tidak didukung untuk filter, faset, lengkapi otomatis, atau saran. Pelengkapan otomatis dan saran hanya didasarkan pada istilah asli; kecocokan sinonim tidak muncul dalam respons.

Ekspansi sinonim tidak berlaku untuk istilah pencarian kartubebas; awalan, fuzzy, dan istilah regex tidak diperluas.

Jika Anda perlu melakukan satu kueri yang menerapkan ekspansi sinonim dan pencarian wildcard, regex, atau samar, Anda dapat menggabungkan kueri menggunakan sintaksis OR. Misalnya, untuk menggabungkan sinonim dengan wildcard untuk sintaksis kueri sederhana, istilahnya adalah <query> | <query>*.

Jika Anda memiliki indeks yang ada di lingkungan pengembangan (non-produksi), bereksperimenlah dengan kamus kecil untuk melihat bagaimana penambahan sinonim mengubah pengalaman pencarian, termasuk dampak pada profil penilaian, penyorotan hit, dan saran.

Langkah berikutnya