Sinonim dalam Azure Cognitive Search

Dalam layanan pencarian, peta sinonim adalah sumber daya global yang mengasosiasikan istilah yang setara, memperluas cakupan kueri tanpa pengguna harus benar-benar memberikan istilah tersebut. 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 membuat leksikon jika konten Anda menyertakan terminologi teknis atau tidak jelas. Meskipun Anda dapat membuat beberapa peta sinonim di layanan pencarian Anda, bidang hanya dapat menggunakan salah satunya.

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=2020-06-30
{
    "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 solr ini 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 akan menghilangkan huruf besar pada istilah dengan huruf besar/campuran, 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 pada USA akan meluas ke USA OR "United States" OR "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 akan 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 =>. Bila ditentukan, urutan istilah kueri pencarian yang cocok dengan sisi kiri => akan diganti dengan alternatif di sisi kanan pada waktu kueri.

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

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

Meng-escape 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 terbalik itu sendiri adalah karakter khusus dalam bahasa lain seperti JSON dan C#, Anda mungkin perlu meng-escape-nya dua kali. 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 merupakan operasi seluruh dokumen, yang berarti Anda tidak dapat memperbarui atau menghapus bagian dari 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. Fitur lengkapi otomatis dan saran hanya didasarkan pada istilah asli; kecocokan sinonim tidak muncul dalam respons.

Ekspansi sinonim tidak berlaku untuk istilah pencarian wildcard; istilah awalan, samar, dan 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