Funkcje wyszukiwania pełnotekstowego OData w usłudze Azure AI Search — search.ismatch
i search.ismatchscoring
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 lub 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. Dokumenty zgodne z zapytaniem wyszukiwania zostaną zwrócone 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 | Type | 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 korzystania z 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 będą miały 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 pozwala utworzyć ją przy użyciu innych wyrażeń podrzędnych 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 filtru 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 przyczyni się do ogólnego wyniku dokumentu, podczas gdy w przypadku search.ismatch
elementu wynik dokumentu nie zostanie zmieniony. 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')
Znajdź dokumenty ze słowem "hostel" i ocena większa lub równa 4, lub dokumenty ze słowem "motel" i ocena równa 5. Należy pamiętać, że nie można wyrazić tego żądania bez search.ismatchscoring
funkcji.
search.ismatchscoring('hostel') and Rating ge 4 or search.ismatchscoring('motel') and Rating eq 5
Znajdź dokumenty bez słowa "luksus".
not search.ismatch('luxury')
Znajdź dokumenty z frazą "widok oceanu" lub ocena równa 5. Zapytanie search.ismatchscoring
zostanie wykonane tylko względem pól HotelName
i Rooms/Description
.
Dokumenty, które pasują tylko do drugiej klauzuli rozsyłania, zostaną zwrócone zbyt - hotele o Rating
wartości równej 5. Aby wyjaśnić, że te dokumenty nie pasują do żadnego z ocenianych części wyrażenia, zostaną one zwrócone z wynikiem równym zero.
search.ismatchscoring('"ocean view"', 'Rooms/Description,HotelName') or Rating eq 5
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. To zapytanie używa pełnego języka zapytań Lucene.
search.ismatch('"hotel airport"~5', 'Description', 'full', 'any') and Rooms/any(room: not room/SmokingAllowed)
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')