Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Funkcje wyszukiwania pełnotekstowego OData w usłudze Azure AI Search —
Usługa Azure AI Search obsługuje wyszukiwanie pełnotekstowe w kontekście wyrażeń filtrów OData za pośrednictwem search.ismatch
funkcji i search.ismatchscoring
. Te funkcje umożliwiają łączenie wyszukiwania pełnotekstowego z rygorystycznym filtrowaniem logicznym w sposób, który nie jest możliwy tylko przy użyciu parametru najwyższego poziomu search
interfejsu API wyszukiwania.
Uwaga
Funkcje search.ismatch
i search.ismatchscoring
są obsługiwane tylko w filtrach w interfejsie API wyszukiwania. Nie są one obsługiwane w interfejsach API Sugerowanie ani Autouzupełnianie .
Składnia
Następujący formularz EBNF (rozszerzony formularz Backus-Naur) definiuje gramatykę search.ismatch
funkcji i 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'"
Dostępny jest również interakcyjny diagram składni:
Uwaga
Zobacz dokumentację składni wyrażeń OData dla usługi Azure AI Search , aby zapoznać się z pełną pełną NF.
search.ismatch
Funkcja search.ismatch
ocenia zapytanie wyszukiwania pełnotekstowego w ramach wyrażenia filtru. Pasujące dokumenty są zwracane w zestawie wyników. Dostępne są następujące przeciążenia tej funkcji:
search.ismatch(search)
search.ismatch(search, searchFields)
search.ismatch(search, searchFields, queryType, searchMode)
Parametry są zdefiniowane w poniższej tabeli:
Nazwa parametru | Typ | Opis |
---|---|---|
search |
Edm.String |
Zapytanie wyszukiwania (w prostej lub pełnej składni zapytania Lucene). |
searchFields |
Edm.String |
Rozdzielona przecinkami lista pól z możliwością wyszukiwania; wartość domyślna to wszystkie pola z możliwością wyszukiwania w indeksie. W przypadku użycia wyszukiwania w polu w parametrze search specyfikatory pól w zapytaniu Lucene zastępują wszystkie pola określone w tym parametrze. |
queryType |
Edm.String |
'simple' lub 'full' ; wartość domyślna to 'simple' . Określa, jakiego języka zapytań użyto w parametrze search . |
searchMode |
Edm.String |
'any' lub 'all' , wartość domyślna to 'any' . Wskazuje, czy dowolne lub wszystkie terminy wyszukiwania w parametrze search muszą być dopasowane w celu zliczenia dokumentu jako dopasowania. W przypadku używania operatorów logicznych Lucene w parametrze search mają pierwszeństwo przed tym parametrem. |
Wszystkie powyższe parametry są równoważne odpowiednim parametrom żądania wyszukiwania w interfejsie API wyszukiwania.
Funkcja search.ismatch
zwraca wartość typu Edm.Boolean
, która umożliwia utworzenie jej z innymi podwyrażeniami filtru przy użyciu operatorów logicznych logicznych.
Uwaga
Usługa Azure AI Search nie obsługuje używania search.ismatch
ani search.ismatchscoring
wewnątrz wyrażeń lambda. Oznacza to, że nie można zapisywać filtrów w kolekcjach obiektów, które mogą korelować dopasowania wyszukiwania pełnotekstowego z ścisłymi dopasowaniami filtrów w tym samym obiekcie. Aby uzyskać więcej informacji na temat tego ograniczenia, a także przykłady, zobacz Rozwiązywanie problemów z filtrami kolekcji w usłudze Azure AI Search. Aby uzyskać bardziej szczegółowe informacje na temat tego, dlaczego to ograniczenie istnieje, zobacz Understanding collection filters in Azure AI Search (Opis filtrów kolekcji w usłudze Azure AI Search).
search.ismatchscoring
Funkcja search.ismatchscoring
, podobnie jak search.ismatch
funkcja, zwraca true
dokumenty pasujące do zapytania wyszukiwania pełnotekstowego przekazanego jako parametr. Różnica między nimi polega na tym, że wynik istotności dokumentów pasujących search.ismatchscoring
do zapytania przyczynia się do ogólnego wyniku dokumentu, natomiast dla elementu search.ismatch
wynik dokumentu nie zmienia się. Następujące przeciążenia tej funkcji są dostępne z parametrami identycznymi z parametrami :search.ismatch
search.ismatchscoring(search)
search.ismatchscoring(search, searchFields)
search.ismatchscoring(search, searchFields, queryType, searchMode)
Zarówno funkcje , jak search.ismatch
i search.ismatchscoring
mogą być używane w tym samym wyrażeniu filtru.
Przykłady
Znajdź dokumenty ze słowem "nabrzeża". To zapytanie filtru jest identyczne z żądaniem wyszukiwania za pomocą search=waterfront
polecenia .
search.ismatchscoring('waterfront')
Oto pełna składnia zapytania dla tego żądania, którą można uruchomić w Eksploratorze wyszukiwania w witrynie Azure Portal. Dane wyjściowe składają się z dopasowań na nabrzeżu, wodzie i przednie.
{
"search": "*",
"select": "HotelId, HotelName, Description",
"searchMode": "all",
"queryType": "simple",
"count": true,
"filter": "search.ismatchscoring('waterfront')"
}
Znajdź dokumenty ze słowem "pool" i ocenam większym lub równym 4 lub dokumentom ze słowem "motel" i równym 3.2. Należy pamiętać, że nie można wyrazić tego żądania bez search.ismatchscoring
funkcji.
search.ismatchscoring('pool') and Rating ge 4 or search.ismatchscoring('motel') and Rating eq 3.2
Oto pełna składnia zapytania dla tego żądania dla Eksploratora wyszukiwania. Dane wyjściowe składają się z dopasowań w hotelach z basenami o ocenie większej niż 4 lub moteli o ocenie równej 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"
}
Znajdź dokumenty bez słowa "luksus".
not search.ismatch('luxury')
Oto pełna składnia zapytania dla tego żądania. Dane wyjściowe składają się z dopasowań do terminu luksus.
{
"search": "*",
"select": "HotelId, HotelName, Description, Tags, Rating",
"searchMode": "all",
"queryType": "simple",
"count": true,
"filter": "not search.ismatch('luxury')"
}
Znajdź dokumenty z frazą "ocean" lub ocena równa 3.2. Zapytanie search.ismatchscoring
jest wykonywane tylko względem pól HotelName
i Description
.
Oto pełna składnia zapytania dla tego żądania. Zwracane są również dokumenty zgodne tylko z drugą klauzulą rozsyłania (w szczególności hotele z równym Rating
3.2
). Aby wyjaśnić, że te dokumenty nie pasują do żadnego z ocenianych części wyrażenia, są zwracane z wynikiem równym zero.
{
"search": "*",
"select": "HotelId, HotelName, Description, Rating",
"searchMode": "all",
"queryType": "full",
"count": true,
"filter": "search.ismatchscoring('ocean', 'Description,HotelName') or Rating eq 3.2"
}
Dane wyjściowe składają się z 4 dopasowań: hotele, które wspominają o "oceanie" w opisie lub nazwie hotelu, albo hotele z oceną 3.2. Zwróć uwagę na wynik wyszukiwania zero dla dopasowań w drugiej klauzuli.
{
"@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
}
]
}
Znajdź dokumenty, w których terminy "hotel" i "lotnisko" znajdują się w odległości 5 słów od siebie w opisie hotelu i gdzie palenie nie jest dozwolone w co najmniej niektórych pokojach.
search.ismatch('"hotel airport"~5', 'Description', 'full', 'any') and Rooms/any(room: not room/SmokingAllowed)
Oto pełna składnia zapytania. Aby uruchomić w Eksploratorze wyszukiwania, należy uruchomić znaki cudzysłowu wewnętrznego znakiem ukośnika odwrotnego.
{
"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)"
}
Dane wyjściowe składają się z jednego dokumentu, w którym terminy "hotel" i "lotnisko" znajdują się w odległości 5 wyrazów. Palenie jest dozwolone dla kilku pokoi w większości hoteli, w tym jednego w tym wyniku wyszukiwania.
{
"@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
}
]
}
Znajdź dokumenty, które mają wyraz rozpoczynający się literami "lux" w polu Opis. To zapytanie używa wyszukiwania prefiksów w połączeniu z search.ismatch
.
search.ismatch('lux*', 'Description')
Oto pełne zapytanie:
{
"search": "*",
"select": "HotelId, HotelName, Description, Tags, Rating",
"searchMode": "all",
"queryType": "simple",
"count": true,
"filter": "search.ismatch('lux*', 'Description')"
}
Dane wyjściowe składają się z następujących dopasowań.
{
"@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
}
]
}