Mengonfigurasi pemberi saran untuk pelengkapan otomatis dan kecocokan yang disarankan dalam kueri

Di Azure AI Search, typeahead (lengkapi otomatis) atau "search-as-you-type" diaktifkan melalui pemberi saran. Pemberi saran adalah konfigurasi dalam indeks yang menentukan bidang mana yang harus digunakan untuk mengisi lengkapi otomatis dan saran. Bidang-bidang ini mengalami tokenisasi ekstra, menghasilkan urutan awalan untuk mendukung kecocokan pada istilah parsial. Misalnya, pemberi saran yang menyertakan bidang Kota dengan nilai untuk "Seattle" akan memiliki kombinasi awalan dari "sea", "seat", "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 menjadi pelengkapan otomatis, yang melengkapi input parsial untuk seluruh kueri istilah, atau saran yang mengundang klik pada kecocokan tertentu. Pelengkapan otomatis menghasilkan kueri. Saran menghasilkan dokumen yang cocok.

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

Visual comparison of autocomplete and suggested queries

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, menggunakan salah satu API yang tercantum di bagian selanjutnya.

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 dan respons tertentu dikembalikan setelah pengguna menyediakan setidaknya tiga string input 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 tipe kompleks (misalnya, bidang Kota di dalam Alamat), sertakan induk di jalur bidang: "Address/City" (REST dan 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 Cara membangun kembali indeks Pencarian Azure AI.

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 akan memungkinkan salah satu bidang memiliki saran, sementara yang lain dapat diatur dengan konfigurasi penganalisis kustom.

Membuat menggunakan portal

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. Pada setiap definisi bidang untuk bidang baru, pilih kotak centang di kolom 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

Pada REST API, tambahkan pemberi saran melalui 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 pada bidang, penganalisis harus menjadi penganalisis leksikal yang dinamai dari daftar ini (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=2023-11-01
{
  "search": "minecraf",
  "suggesterName": "sg"
}

Kode Sampel

Langkah berikutnya

Pelajari selengkapnya tentang permintaan\ formulasi.