Fungsi pencarian teks lengkap OData di Pencarian Azure AI - search.ismatch
dan search.ismatchscoring
Azure AI Search mendukung pencarian teks lengkap dalam konteks ekspresi filter OData melalui search.ismatch
fungsi dan search.ismatchscoring
. Fungsi ini memungkinkan Anda untuk menggabungkan pencarian teks lengkap beserta pemfilteran Boolean yang ketat dengan cara yang tidak mungkin hanya menggunakan parameter search
tingkat atas dari Search API.
Catatan
Fungsi search.ismatch
dan search.ismatchscoring
hanya didukung dalam filter di Search API. Fungsi tersebut tidak didukung di API Suggest atau Autocomplete.
Sintaks
EBNF(Extended Backus-Naur Form) berikut mendefinisikan tata bahasa fungsi search.ismatch
dan search.ismatchscoring
:
search_is_match_call ::=
'search.ismatch'('scoring')?'(' search_is_match_parameters ')'
search_is_match_parameters ::=
string_literal(',' string_literal(',' query_type ',' search_mode)?)?
query_type ::= "'full'" | "'simple'"
search_mode ::= "'any'" | "'all'"
Diagram sintaksis interaktif juga tersedia:
Catatan
Lihat Referensi sintaks ekspresi OData untuk Pencarian Azure AI untuk EBNF lengkap.
search.ismatch
Fungsi search.ismatch
mengevaluasi kueri pencarian teks lengkap sebagai bagian dari ekspresi filter. Dokumen yang cocok dengan kueri pencarian akan ditampilkan dalam tataan hasil. Kelebihan beban berikut dari fungsi ini tersedia:
search.ismatch(search)
search.ismatch(search, searchFields)
search.ismatch(search, searchFields, queryType, searchMode)
Parameter didefinisikan dalam tabel berikut:
Nama Parameter | Tipe | Deskripsi |
---|---|---|
search |
Edm.String |
Kueri pencarian (dalam sintaksis kueri Lucene sederhana atau lengkap). |
searchFields |
Edm.String |
Daftar kolom yang dapat dicari yang dipisahkan koma untuk pencarian; default ke semua kolom yang dapat dicari dalam indeks. Saat menggunakan pencarian kolom di parameter search , penentu kolom di kueri Lucene menggantikan kolom apa pun yang ditentukan di parameter ini. |
queryType |
Edm.String |
'simple' atau 'full' ; default ke 'simple' . Menentukan bahasa kueri yang digunakan di parameter search . |
searchMode |
Edm.String |
'any' atau 'all' , default ke 'any' . Menunjukkan apakah salah satu atau semua istilah pencarian di parameter search harus dicocokkan untuk menentukan dokumen sebagai kecocokan. Saat menggunakan operator Boolean Lucene di parameter search , operator itu akan lebih diutamakan daripada parameter ini. |
Semua parameter di atas setara dengan parameter permintaan pencarian di Search API yang sesuai.
Fungsi search.ismatch
menampilkan nilai jenis Edm.Boolean
, yang memungkinkan Anda menyusunnya dengan sub-ekspresi filter lain menggunakan operator logis Boolean.
Catatan
Azure AI Search tidak mendukung penggunaan search.ismatch
atau search.ismatchscoring
di dalam ekspresi lambda. Ini berarti, menulis filter di atas kumpulan objek yang dapat mengorelasikan kecocokan pencarian teks lengkap dengan kecocokan filter ketat pada objek yang sama tidak mungkin dilakukan. Untuk detail selengkapnya tentang batasan ini serta contoh, lihat Memecahkan masalah filter koleksi di Azure AI Search. Untuk informasi lebih mendalam tentang mengapa batasan ini ada, lihat Memahami filter koleksi di Azure AI Search.
search.ismatchscoring
Fungsi search.ismatchscoring
, seperti fungsi search.ismatch
, menampilkan true
untuk dokumen yang cocok dengan kueri pencarian teks lengkap yang diteruskan sebagai parameter. Perbedaan di antara keduanya adalah skor relevansi dokumen yang cocok dengan kueri search.ismatchscoring
akan berkontribusi pada skor dokumen keseluruhan, sementara di kasus search.ismatch
, skor dokumen tidak akan berubah. Kelebihan beban berikut dari fungsi ini tersedia beserta parameter yang identik dengan search.ismatch
:
search.ismatchscoring(search)
search.ismatchscoring(search, searchFields)
search.ismatchscoring(search, searchFields, queryType, searchMode)
Fungsi search.ismatch
dan search.ismatchscoring
dapat digunakan dalam ekspresi filter yang sama.
Contoh
Temukan dokumen dengan kata "tepi laut". Kueri filter ini identik dengan permintaan pencarian dengan search=waterfront
.
search.ismatchscoring('waterfront')
Temukan dokumen dengan kata "hostel" dan peringkat lebih besar atau sama dengan 4, atau dokumen dengan kata "motel" dan peringkat sama dengan 5. Perhatikan, permintaan ini tidak dapat diungkapkan tanpa fungsi search.ismatchscoring
.
search.ismatchscoring('hostel') and Rating ge 4 or search.ismatchscoring('motel') and Rating eq 5
Temukan dokumen tanpa kata "luxury".
not search.ismatch('luxury')
Temukan dokumen dengan frasa "ocean view" atau peringkat sama dengan 5. Kueri search.ismatchscoring
hanya akan dijalankan pada kolom HotelName
dan Rooms/Description
.
Dokumen yang hanya cocok dengan klausul kedua pemisah juga akan ditampilkan - hotel dengan Rating
yang sama dengan 5. Untuk memperjelas bahwa dokumen tersebut tidak cocok dengan bagian ekspresi yang dinilai, dokumen itu akan ditampilkan dengan skor nol.
search.ismatchscoring('"ocean view"', 'Rooms/Description,HotelName') or Rating eq 5
Temukan dokumen dengan istilah "hotel" dan "bandara" yang berada dalam 5 kata satu sama lain di deskripsi hotel, dan dokumen berisi merokok tidak diizinkan di setidaknya beberapa kamar. Kueri ini menggunakan bahasa kueri Lucene lengkap.
search.ismatch('"hotel airport"~5', 'Description', 'full', 'any') and Rooms/any(room: not room/SmokingAllowed)
Temukan dokumen yang memiliki kata yang dimulai dengan huruf "lux" di bidang Deskripsi. Kueri ini menggunakan pencarian prefiksyang dikombinasikan dengan search.ismatch
.
search.ismatch('lux*', 'Description')