Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Fungsi pencarian teks lengkap OData di Pencarian Azure AI -
Azure AI Search mendukung pencarian teks lengkap dalam konteks ekspresi filter OData melalui search.ismatch
fungsi dan search.ismatchscoring
. Fungsi-fungsi ini memungkinkan Anda menggabungkan pencarian teks lengkap dengan pemfilteran Boolean yang ketat dengan cara yang tidak dimungkinkan hanya dengan menggunakan parameter tingkat search
atas Search API.
Catatan
Fungsi search.ismatch
dan search.ismatchscoring
hanya didukung dalam filter di Search API. Mereka tidak didukung di API Sarankan atau Lengkapi Otomatis .
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 dikembalikan 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 Anda menggunakan pencarian bidang dalam search parameter, penentu bidang dalam kueri Lucene mengambil alih bidang apa pun yang ditentukan dalam 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. Ketika Anda menggunakan operator Lucene Boolean dalam search parameter , operator tersebut lebih diutamakan daripada parameter ini. |
Semua parameter di atas setara dengan parameter permintaan pencarian di Search API yang sesuai.
Fungsi mengembalikan search.ismatch
nilai jenis Edm.Boolean
, yang memungkinkan Anda menyusunnya dengan subekspresi filter lainnya menggunakan operator logis Boolean.
Catatan
Azure AI Search tidak mendukung penggunaan search.ismatch
atau search.ismatchscoring
di dalam ekspresi lambda. Ini berarti tidak mungkin untuk menulis filter atas koleksi objek yang dapat menghubungkan kecocokan pencarian teks lengkap dengan kecocokan filter yang ketat pada objek yang sama. Untuk informasi 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. Perbedaannya adalah bahwa skor relevansi dokumen yang cocok dengan search.ismatchscoring
kueri berkontribusi pada skor dokumen keseluruhan, sedangkan untuk search.ismatch
, skor dokumen tidak 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')
Berikut adalah sintaks kueri lengkap untuk permintaan ini, yang dapat Anda jalankan di Search Explorer di portal Microsoft Azure. Output terdiri dari kecocokan di tepi laut, air, dan depan.
{
"search": "*",
"select": "HotelId, HotelName, Description",
"searchMode": "all",
"queryType": "simple",
"count": true,
"filter": "search.ismatchscoring('waterfront')"
}
Temukan dokumen dengan kata "kumpulan" dan peringkat lebih besar atau sama dengan 4, atau dokumen dengan kata "motel" dan sama dengan 3.2. Perhatikan, permintaan ini tidak dapat diekspresikan tanpa search.ismatchscoring
fungsi .
search.ismatchscoring('pool') and Rating ge 4 or search.ismatchscoring('motel') and Rating eq 3.2
Berikut adalah sintaks kueri lengkap untuk permintaan ini untuk Search Explorer. Output terdiri dari kecocokan pada hotel dengan kumpulan yang memiliki peringkat lebih besar dari 4, atau motel dengan peringkat sama dengan 3,2.
{
"search": "*",
"select": "HotelId, HotelName, Description, Tags, Rating",
"searchMode": "all",
"queryType": "simple",
"count": true,
"filter": "search.ismatchscoring('pool') and Rating ge 4 or search.ismatchscoring('motel') and Rating eq 3.2"
}
Temukan dokumen tanpa kata "luxury".
not search.ismatch('luxury')
Berikut adalah sintaks kueri lengkap untuk permintaan ini. Output terdiri dari kecocokan pada istilah mewah.
{
"search": "*",
"select": "HotelId, HotelName, Description, Tags, Rating",
"searchMode": "all",
"queryType": "simple",
"count": true,
"filter": "not search.ismatch('luxury')"
}
Temukan dokumen dengan frasa "lautan" atau peringkat sama dengan 3.2. Kueri search.ismatchscoring
hanya dijalankan terhadap bidang HotelName
dan Description
.
Berikut adalah sintaks kueri lengkap untuk permintaan ini. Dokumen yang hanya cocok dengan klausul kedua dari pemisahan juga dikembalikan (khususnya, hotel dengan sama 3.2
dengan Rating
). Untuk memperjelas bahwa dokumen-dokumen tersebut tidak cocok dengan salah satu bagian ekspresi yang dinilai, dokumen tersebut dikembalikan dengan skor yang sama dengan nol.
{
"search": "*",
"select": "HotelId, HotelName, Description, Rating",
"searchMode": "all",
"queryType": "full",
"count": true,
"filter": "search.ismatchscoring('ocean', 'Description,HotelName') or Rating eq 3.2"
}
Output terdiri dari 4 kecocokan: hotel yang menyebutkan "laut" dalam Deskripsi atau Nama Hotel, atau hotel dengan peringkat 3.2. Perhatikan skor pencarian nol untuk kecocokan pada klausa kedua.
{
"@odata.count": 4,
"value": [
{
"@search.score": 1.6076145,
"HotelId": "18",
"HotelName": "Ocean Water Resort & Spa",
"Description": "New Luxury Hotel for the vacation of a lifetime. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
"Rating": 4.2
},
{
"@search.score": 1.0594962,
"HotelId": "41",
"HotelName": "Windy Ocean Motel",
"Description": "Oceanfront hotel overlooking the beach features rooms with a private balcony and 2 indoor and outdoor pools. Inspired by the natural beauty of the island, each room includes an original painting of local scenes by the owner. Rooms include a mini fridge, Keurig coffee maker, and flatscreen TV. Various shops and art entertainment are on the boardwalk, just steps away.",
"Rating": 3.5
},
{
"@search.score": 0,
"HotelId": "40",
"HotelName": "Trails End Motel",
"Description": "Only 8 miles from Downtown. On-site bar/restaurant, Free hot breakfast buffet, Free wireless internet, All non-smoking hotel. Only 15 miles from airport.",
"Rating": 3.2
},
{
"@search.score": 0,
"HotelId": "26",
"HotelName": "Planetary Plaza & Suites",
"Description": "Extend Your Stay. Affordable home away from home, with amenities like free Wi-Fi, full kitchen, and convenient laundry service.",
"Rating": 3.2
}
]
}
Temukan dokumen di mana istilah "hotel" dan "bandara" berada dalam 5 kata satu sama lain dalam deskripsi hotel, dan di mana merokok tidak diizinkan di setidaknya beberapa kamar.
search.ismatch('"hotel airport"~5', 'Description', 'full', 'any') and Rooms/any(room: not room/SmokingAllowed)
Berikut sintaks kueri lengkapnya. Untuk berjalan di Search Explorer, lolos dari tanda kutip interior dengan karakter garis miring terbalik.
{
"search": "*",
"select": "HotelId, HotelName, Description, Tags, Rating",
"searchMode": "all",
"queryType": "simple",
"count": true,
"filter": "search.ismatch('\"hotel airport\"~5', 'Description', 'full', 'any') and Rooms/any(room: not room/SmokingAllowed)"
}
Output terdiri dari satu dokumen di mana istilah "hotel" dan "bandara" berada dalam jarak 5 kata. Merokok diperbolehkan untuk beberapa kamar di sebagian besar hotel, termasuk kamar dalam hasil pencarian ini.
{
"@odata.count": 1,
"value": [
{
"@search.score": 1,
"HotelId": "40",
"HotelName": "Trails End Motel",
"Description": "Only 8 miles from Downtown. On-site bar/restaurant, Free hot breakfast buffet, Free wireless internet, All non-smoking hotel. Only 15 miles from airport.",
"Tags": [
"bar",
"free wifi",
"restaurant"
],
"Rating": 3.2
}
]
}
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')
Berikut adalah kueri lengkap:
{
"search": "*",
"select": "HotelId, HotelName, Description, Tags, Rating",
"searchMode": "all",
"queryType": "simple",
"count": true,
"filter": "search.ismatch('lux*', 'Description')"
}
Output terdiri dari kecocokan berikut.
{
"@odata.count": 4,
"value": [
{
"@search.score": 1,
"HotelId": "18",
"HotelName": "Ocean Water Resort & Spa",
"Description": "New Luxury Hotel for the vacation of a lifetime. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
"Tags": [
"view",
"pool",
"restaurant"
],
"Rating": 4.2
},
{
"@search.score": 1,
"HotelId": "13",
"HotelName": "Luxury Lion Resort",
"Description": "Unmatched Luxury. Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium and transportation hubs, we feature the best in convenience and comfort.",
"Tags": [
"bar",
"concierge",
"restaurant"
],
"Rating": 4.1
},
{
"@search.score": 1,
"HotelId": "16",
"HotelName": "Double Sanctuary Resort",
"Description": "5 star Luxury Hotel - Biggest Rooms in the city. #1 Hotel in the area listed by Traveler magazine. Free WiFi, Flexible check in/out, Fitness Center & espresso in room.",
"Tags": [
"view",
"pool",
"restaurant",
"bar",
"continental breakfast"
],
"Rating": 4.2
},
{
"@search.score": 1,
"HotelId": "14",
"HotelName": "Twin Vortex Hotel",
"Description": "New experience in the making. Be the first to experience the luxury of the Twin Vortex. Reserve one of our newly-renovated guest rooms today.",
"Tags": [
"bar",
"restaurant",
"concierge"
],
"Rating": 4.4
}
]
}