Bagikan melalui


Mengonfigurasi pemberi saran untuk pelengkapan otomatis dan saran dalam kueri

Di Pencarian Azure AI, typeahead atau "search-as-you-type" diaktifkan dengan menggunakan pemberi saran. Pemberi saran adalah konfigurasi dalam indeks yang menentukan bidang mana yang harus digunakan untuk mengisi lengkapi otomatis dan kecocokan yang disarankan. Bidang-bidang ini mengalami tokenisasi ekstra, menghasilkan urutan awalan untuk mendukung kecocokan pada istilah parsial. Misalnya, pemberi saran yang menyertakan city bidang dengan nilai untuk Seattle memiliki kombinasi awalan laut, kursi, seatt, dan seattl untuk mendukung typeahead.

Kecocokan pada istilah parsial dapat berupa kueri pelengakapan otomatis atau saran kecocokan. Pemberi saran yang sama mendukung kedua pengalaman.

Typeahead dapat menggunakan pelengkapan otomatis, yang menyelesaikan input parsial untuk seluruh kueri istilah, atau saran yang mengundang klik ke kecocokan tertentu. Pelengkapan otomatis menghasilkan kueri. Saran menghasilkan dokumen yang cocok.

Cuplikan layar berikut mengilustrasikan keduanya. Pelengkapan otomatis mengantisipasi istilah potensial, menyelesaikan tw dengan masuk. Saran adalah hasil pencarian mini, di mana bidang seperti hotel name mewakili dokumen pencarian hotel yang cocok dari indeks. Untuk saran, Anda dapat menampilkan bidang apa pun yang menyediakan informasi deskriptif.

Cuplikan layar memperlihatkan perbandingan visual lengkapi otomatis dan kueri yang disarankan.

Anda dapat menggunakan fitur ini secara terpisah ataupun bersama-sama. Untuk menerapkan perilaku ini di Azure AI Search, ada komponen indeks dan kueri.

  • Tambahkan pemberi saran ke definisi indeks pencarian. Sisa artikel ini berfokus pada pembuatan pemberi saran.

  • Panggil kueri yang diaktifkan pemberi saran, dalam bentuk permintaan saran atau permintaan lengkapi otomatis, dengan menggunakan salah satu API yang tercantum di Menggunakan pemberi saran.

Search-as-you-type diaktifkan berdasarkan per bidang untuk bidang string. Anda dapat menerapkan perilaku typeahead dalam solusi pencarian yang sama jika Anda menginginkan pengalaman yang mirip dengan yang ditunjukkan dalam cuplikan layar. Kedua permintaan menargetkan kumpulan dokumen indeks tertentu, dan respons dikembalikan setelah pengguna menyediakan setidaknya string input tiga karakter.

Cara membuat pemberi saran

Untuk membuat pemberi saran, tambahkan ke definisi indeks. Pemberi saran mengambil nama dan koleksi bidang tempat pengalaman typeahead diaktifkan. Waktu terbaik untuk membuat pemberi saran adalah ketika Anda juga menentukan bidang yang menggunakannya.

  • Gunakan bidang string saja.

  • Jika bidang string adalah bagian dari jenis kompleks (misalnya, bidang Kota dalam Alamat), sertakan induk di jalur bidang: "Address/City" (REST, C#, dan Python), atau ["Address"]["City"] (JavaScript).

  • Gunakan penganalisis Lucene standar default ("analyzer": null) atau bahasa penganalisis (misalnya "analyzer": "en.Microsoft") pada bidang tersebut.

Jika Anda mencoba membuat pemberi saran menggunakan bidang yang sudah ada sebelumnya, API melarangnya. Awalan dihasilkan selama pengindeksan ketika istilah parsial dalam dua atau lebih kombinasi karakter ditokenisasi bersama dengan keseluruhan istilah. Mengingat bahwa bidang yang ada sudah ditokenisasi, Anda harus membangun kembali indeks jika Anda ingin menambahkannya ke pemberi saran. Untuk informasi selengkapnya, lihat Memperbarui atau membangun ulang indeks di Azure AI Search.

Memilih bidang

Meskipun pemberi saran memiliki beberapa properti, ini terutama kumpulan bidang string yang Anda aktifkan pengalaman pencarian sesuai jenisnya. Ada satu pemberi saran untuk setiap indeks, sehingga daftar pemberi saran harus menyertakan semua bidang yang berkontribusi konten untuk saran dan lengkapi otomatis.

Lengkapi otomatis manfaat dari kumpulan bidang yang lebih besar untuk diambil karena konten tambahan memiliki potensi penyelesaian istilah yang lebih besar.

Di sisi lain, saran memberikan hasil yang lebih baik ketika pilihan bidang Anda selektif. Ingatlah bahwa saran adalah proksi untuk dokumen pencarian sehingga pilih bidang yang paling mewakili satu hasil. Nama, judul, atau bidang unik lainnya yang membedakan di antara beberapa kecocokan berfungsi paling baik. Jika bidang terdiri dari nilai berulang, saran terdiri dari hasil yang identik dan pengguna tidak akan tahu mana yang harus dipilih.

Untuk memenuhi kedua pengalaman pencarian sesuai jenis, tambahkan semua bidang yang Anda butuhkan untuk pelengkapan otomatis, tetapi kemudian gunakan select, top, filter, dan searchFields untuk mengontrol hasil untuk saran.

Pilih penganalisis

Pilihan penganalisis Anda menentukan bagaimana bidang ditokenisasi dan diawali. Misalnya, untuk string yang dipending seperti peka konteks, menggunakan penganalisis bahasa menghasilkan kombinasi token ini: konteks, sensitif, peka konteks. Jika Anda menggunakan penganalisis Lucene standar, string yang dipendam tidak akan ada.

Saat mengevaluasi penganalisis, pertimbangkan untuk menggunakanAnalisis Teks API untuk wawasan tentang cara istilah diproses. Setelah indeks dibangun, Anda dapat mencoba berbagai penganalisis pada string untuk melihat output token.

Bidang yang menggunakan penganalisis kustom atau penganalisis bawaan, (kecuali Lucene standar) secara eksplisit dilarang untuk mencegah hasil yang buruk.

Catatan

Jika Anda perlu menyiasati batasan penganalisis, misalnya jika Anda memerlukan penganalis kata kunci atau ngram untuk skenario kueri tertentu, Anda harus menggunakan dua bidang terpisah untuk konten yang sama. Ini memungkinkan salah satu bidang untuk memiliki pemberi saran, sementara yang lain dapat disiapkan dengan konfigurasi penganalisis kustom.

Membuat portal Microsoft Azure

Saat menggunakan Tambahkan Indeks atau wizard Impor data untuk membuat indeks, Anda memiliki opsi untuk mengaktifkan pemberi saran:

  1. Pada definisi indeks, masukkan nama untuk saran.

  2. Di setiap definisi bidang untuk bidang baru, pilih kotak centang di kolom Pemberi Saran. Kotak centang hanya tersedia pada bidang string.

Seperti yang telah disebutkan sebelumnya, pilihan penganalisis berdampak pada tokenisasi dan pemberian awalan. Pertimbangkan seluruh definisi bidang saat mengaktifkan pemberi saran.

Membuat menggunakan REST

Di REST API, tambahkan pemberi saran dengan menggunakan Buat Indeks atau Perbarui Indeks.

{
  "name": "hotels-sample-index",
  "fields": [
    . . .
        {
            "name": "HotelName",
            "type": "Edm.String",
            "facetable": false,
            "filterable": false,
            "key": false,
            "retrievable": true,
            "searchable": true,
            "sortable": false,
            "analyzer": "en.microsoft",
            "indexAnalyzer": null,
            "searchAnalyzer": null,
            "synonymMaps": [],
            "fields": []
        },
  ],
  "suggesters": [
    {
      "name": "sg",
      "searchMode": "analyzingInfixMatching",
      "sourceFields": ["HotelName"]
    }
  ],
  "scoringProfiles": [
    . . .
  ]
}

Buat menggunakan .NET

Pada C#, tentukan objek SearchSuggester. Suggesters adalah koleksi pada objek SearchIndex, tetapi hanya dapat mengambil satu item. Tambahkan saran ke definisi indeks.

private static void CreateIndex(string indexName, SearchIndexClient indexClient)
{
    FieldBuilder fieldBuilder = new FieldBuilder();
    var searchFields = fieldBuilder.Build(typeof(Hotel));

    var definition = new SearchIndex(indexName, searchFields);

    var suggester = new SearchSuggester("sg", new[] { "HotelName", "Category", "Address/City", "Address/StateProvince" });
    definition.Suggesters.Add(suggester);

    indexClient.CreateOrUpdateIndex(definition);
}

Referensi properti

Properti Deskripsi
nama Ditentukan dalam definisi pemberi saran, tetapi juga dipanggil pada permintaan Pelengkapan Otomatis atau Saran.
sourceFields Ditentukan dalam definisi pemberi saran. Itu adalah daftar satu bidang atau lebih dalam indeks yang merupakan sumber konten untuk saran. Bidang harus berjenis Edm.String. Jika penganalisis ditentukan di bidang , penganalisis harus bernama penganalisis leksikal yang tercantum di LexicalAnalyzerName Struct (bukan penganalisis kustom).

Sebagai praktik terbaik, tentukan hanya bidang yang meminjamkan diri mereka ke respons yang diharapkan dan sesuai, baik itu string lengkap di bilah pencarian atau daftar dropdown.

Nama hotel adalah kandidat yang baik karena memiliki presisi. Bidang verbose seperti deskripsi dan komentar terlalu padat. Demikian pula bidang berulang, seperti kategori dan tag, juga kurang efektif. Dalam contoh, kami tetap menyertakan kategori untuk menunjukkan bahwa Anda dapat menyertakan beberapa bidang.
searchMode Parameter khusus REST, tetapi juga terlihat di portal. Parameter ini tidak tersedia di .NET SDK. Ini menunjukkan strategi yang digunakan untuk mencari frasa calon. Satu-satunya mode yang didukung adalah analyzingInfixMatching, yang saat ini cocok dengan permulaan dari istilah.

Buat pemberi saran

Pemberi saran digunakan dalam kueri. Setelah pemberi saran dibuat, hubungi salah satu API berikut untuk pengalaman search-as-you-type Anda:

Dalam aplikasi pencarian, kode klien harus menggunakan pustaka seperti jQuery UI Autocomplete untuk mengumpulkan kueri parsial dan menyediakan kecocokan. Untuk informasi selengkapnya tentang tugas ini, lihat Menambahkan pelengkapan otomatis atau hasil yang disarankan ke kode klien.

Penggunaan API diilustrasikan dalam panggilan berikut ke REST API Pelengkapan Otomatis. Ada dua takeaway dari contoh ini. Pertama, seperti semua kueri, operasi ini bertentangan dengan kumpulan dokumen indeks dan kueri menyertakan search parameter, yang dalam hal ini menyediakan kueri parsial. Kedua, Anda harus menambahkan suggesterName ke permintaan. Jika pemberi saran tidak ditentukan dalam indeks, panggilan ke pelengkapan otomatis atau saran gagal.

POST /indexes/myxboxgames/docs/autocomplete?search&api-version=2024-07-01
{
  "search": "minecraf",
  "suggesterName": "sg"
}

Kode Sampel

Untuk mempelajari cara menggunakan paket saran sumber terbuka untuk penyelesaian istilah parsial di aplikasi klien, lihat Menjelajahi kode pencarian .NET.

Langkah selanjutnya

Pelajari selengkapnya tentang rumusan permintaan.