Udostępnij za pośrednictwem


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.ismatchelementu 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=waterfrontpolecenia .

    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')

Następne kroki