Wyszukiwanie dokumentów (interfejs API REST w wersji zapoznawczej)
Dotyczy: 2023-07-01-Preview. Ta wersja nie jest już obsługiwana. Uaktualnij natychmiast do nowszej wersji.
Ważny
2023-07-01-Preview dodaje:
- "wektory" parametr zapytania określający dowolne żądania zapytania wektorowego. Każdy obiekt powinien zawierać wektorowa reprezentacja zapytania , "k" liczby najbliższych sąsiadów, które mają zostać zwrócone w wynikach, oraz pól wektorów do użycia podczas wykonywania zapytania.
2021-04-30-Preview dodaje:
- "semanticConfiguration" obsługuje semantyczną klasyfikację określania zakresu dla określonych pól.
- "podpisy" zwraca frazy wyodrębnione z kluczowych fragmentów w najbardziej semantycznie sklasyfikowanych dokumentach.
2020-06-30-Preview dodaje:
- "queryType=semantic" obsługuje semantyczne ponowne korbowanie i odpowiedzi.
- "searchFields" w semantycznym zapytaniu ustanawia kolejność priorytetu pól używanych do formułowania podpisów i odpowiedzi. To podejście zostało zastąpione przez "semanticConfiguration" w wersji 2021-04-30-Preview i jest teraz przestarzałe.
- "speller" umożliwia korektę pisowni w danych wejściowych zapytania.
- "queryLanguage" jest wymagany zarówno dla "queryType=semantic" i "speller".
- "featuresMode" rozpakowywa ocenę wyszukiwania, raportowanie częstotliwości terminów dla pola, wynik podobieństwa poszczególnych pól i liczbę unikatowych dopasowań dla pola.
Żądanie zapytania dotyczy kolekcji dokumentów pojedynczego indeksu w usłudze wyszukiwania. Zawiera ona parametry definiujące kryteria dopasowania i parametry, które kształtują odpowiedź. Możesz również użyć aliasu indeksu , aby kierować do określonego indeksu zamiast używać samej nazwy indeksu.
W przypadku większości zapytań można użyć funkcji GET lub POST, ale należy użyć funkcji POST do wyszukiwania wektorowego, ponieważ parametry zapytania wektorowego nie mieszczą się w identyfikatorze URI. parametry zapytania są określone w ciągu zapytania dla żądań GET i w treści żądania POST.
GET https://[service name].search.windows.net/indexes/[index name]/docs?[query parameters]
Content-Type: application/json
api-key: [admin or query key]
Jeśli używasz funkcji POST, dodaj akcję "wyszukaj" jako parametr identyfikatora URI.
POST https://[service name].search.windows.net/indexes/[index name]/docs/search?api-version=[api-version]
Content-Type: application/json
api-key: [admin or query key]
Po wywołaniu polecenia GET długość adresu URL żądania nie może przekroczyć 8 KB. Ta długość jest wystarczająca dla większości aplikacji. Jednak niektóre aplikacje tworzą duże zapytania, w szczególności w przypadku użycia wyrażeń filtru OData. W przypadku tych aplikacji protokół HTTP POST jest lepszym wyborem, ponieważ umożliwia większe filtry niż GET.
W przypadku funkcji POST liczba klauzul w filtrze jest czynnikiem ograniczającym, a nie rozmiarem nieprzetworzonego ciągu filtru, ponieważ limit rozmiaru żądania dla post wynosi około 16 MB. Mimo że limit rozmiaru żądania POST jest duży, wyrażenia filtru nie mogą być dowolnie złożone. Aby uzyskać więcej informacji na temat ograniczeń złożoności filtru, zobacz składnia wyrażeń OData dla usługi Azure AI Search.
Parametry identyfikatora URI
Parametr | Opis |
---|---|
nazwa usługi | Wymagane. Ustaw tę nazwę na unikatową, zdefiniowaną przez użytkownika nazwę usługi wyszukiwania. |
nazwa indeksu/dokumentacja | Wymagane. Określa kolekcję dokumentów nazwanego indeksu. Nazwa aliasu indeksu może być również używana zamiast nazwy indeksu. |
parametry zapytania | Parametry zapytania są określane na identyfikatorze URI dla żądań GET i w treści żądania POST. |
wersja interfejsu API | Wymagane. Aby uzyskać więcej wersji, zobacz wersje interfejsu API. |
Zalecenia dotyczące kodowania adresów URL
Pamiętaj, aby kodowanie adresu URL określonych parametrów zapytania podczas bezpośredniego wywoływania interfejsu API REST GET. W przypadku operacji wyszukiwania dokumentów kodowanie adresów URL może być konieczne dla następujących parametrów zapytania:
- szukać
- $filter
- faseta
- highlightPreTag
- highlightPostTag
Kodowanie adresów URL jest zalecane tylko dla poszczególnych parametrów. Jeśli przypadkowo kodujesz cały ciąg zapytania (wszystko po ?
), żądania zostaną przerwane.
Ponadto kodowanie adresów URL jest konieczne tylko w przypadku bezpośredniego wywoływania interfejsu API REST przy użyciu metody GET. Kodowanie adresów URL nie jest konieczne w przypadku korzystania z funkcji POST lub w przypadku korzystania z biblioteki klienta usługi Azure AI Search platformy .NET, która obsługuje kodowanie.
Nagłówki żądań
W poniższej tabeli opisano wymagane i opcjonalne nagłówki żądań.
Pola | Opis |
---|---|
Typ zawartości | Wymagane. Ustaw tę wartość na "application/json" |
api-key | Opcjonalnie, jeśli używasz ról platformy Azure i token elementu nośnego jest udostępniany w żądaniu, w przeciwnym razie wymagany jest klucz. Klucz api-key to unikatowy, generowany przez system ciąg, który uwierzytelnia żądanie w usłudze wyszukiwania. Żądania zapytań względem kolekcji dokumentów mogą określać klucz administratora lub klucz zapytania jako klucz interfejsu API. Klucz zapytania jest używany do operacji tylko do odczytu w kolekcji dokumentów. Aby uzyskać szczegółowe informacje, zobacz Connect to Azure AI Search using key authentication (Łączenie z usługą Azure AI Search przy użyciu uwierzytelniania kluczy). |
Treść żądania
W przypadku polecenia GET: Brak.
W przypadku funkcji POST:
{
"answers": "none" (default) | "extractive",
"count": true | false (default),
"captions": "none" (default) | "extractive",
"facets": [ "facet_expression_1", "facet_expression_2", ... ],
"featuresMode" : "disabled" (default) | "enabled",
"filter": "odata_filter_expression",
"highlight": "highlight_field_1, highlight_field_2, ...",
"highlightPreTag": "pre_tag",
"highlightPostTag": "post_tag",
"minimumCoverage": # (% of index that must be covered to declare query successful; default 100),
"orderby": "orderby_expression",
"queryLanguage": "en-us" (default) | (a supported language code),
"queryType": "simple" (default) | "full" | "semantic",
"scoringParameters": [ "scoring_parameter_1", "scoring_parameter_2", ... ],
"scoringProfile": "scoring_profile_name",
"scoringStatistics" : "local" (default) | "global",
"search": "simple_query_expression",
"searchFields": "field_name_1, field_name_2, ...",
"searchMode": "any" (default) | "all",
"select": "field_name_1, field_name_2, ...",
"semanticConfiguration": "semantic_configuration_name",
"sessionId" : "session_id",
"skip": # (default 0),
"speller": "none" (default) | "lexicon",
"top": #,
"vectors": [
{
"value": "a vector representation of the query",
"k": an integer (number of nearest neighbors to return as top results),
"fields": "a comma-delimited list of vector fields to use in the query"
}
]
}
kontynuacja częściowych odpowiedzi wyszukiwania
Czasami usługa Azure AI Search nie może zwrócić wszystkich żądanych wyników w pojedynczej odpowiedzi wyszukiwania. Częściowa odpowiedź może wystąpić z różnych powodów, takich jak gdy zapytanie zwraca zbyt wiele dokumentów, nie określając $top lub określając wartość $top, która jest zbyt duża. W takich przypadkach usługa Azure AI Search zawiera adnotację @odata.nextLink w treści odpowiedzi, a także @search.nextPageParameters, jeśli była to żądanie POST. Możesz użyć wartości tych adnotacji, aby sformułować kolejne żądanie wyszukiwania, aby uzyskać następną część odpowiedzi wyszukiwania. To zachowanie jest nazywane kontynuacją oryginalnego żądania wyszukiwania, a adnotacje są nazywane tokenami kontynuacji . Zobacz przykład w sekcji Odpowiedź, aby uzyskać szczegółowe informacje o składni tych adnotacji i miejscu ich wyświetlania w treści odpowiedzi.
Przyczyny, dla których usługa Azure AI Search może zwracać tokeny kontynuacji, są specyficzne dla implementacji i mogą ulec zmianie. Niezawodni klienci powinni zawsze być gotowi do obsługi przypadków, w których zwracana jest mniej dokumentów niż oczekiwano, a token kontynuacji jest dołączany do dalszego pobierania dokumentów. Należy również pamiętać, że aby kontynuować, należy użyć tej samej metody HTTP co oryginalne żądanie. Jeśli na przykład wysłano żądanie GET, wszelkie wysyłane żądania kontynuacji muszą również używać polecenia GET (i podobnie dla żądania POST).
Nuta
Celem @odata.nextLink i @search.nextPageParameters jest ochrona usługi przed zapytaniami, które żądają zbyt wielu wyników, a nie zapewnienie ogólnego mechanizmu stronicowania. Jeśli chcesz stronicować wyniki, użyj $top i $skip razem. Jeśli na przykład chcesz, aby strony miały rozmiar 10, pierwsze żądanie powinno mieć $top=10 i $skip=0, drugie żądanie powinno mieć $top=10 i $skip=10, trzecie żądanie powinno mieć $top=10 i $skip=20 itd.
Parametry zapytania
Zapytanie akceptuje kilka parametrów w adresie URL po wywołaniu polecenia GET i jako właściwości JSON w treści żądania po wywołaniu za pomocą funkcji POST. Składnia niektórych parametrów różni się nieco między poleceniami GET i POST. Te różnice zostały zanotowane w poniższej tabeli.
Nazwa | Typ | Opis |
---|---|---|
odpowiedzi (wersja zapoznawcza) | struna | Fakultatywny. Prawidłowe wartości to "none" i "extractive". Wartość domyślna to "none". Ten parametr jest prawidłowy tylko wtedy, gdy typ zapytania jest "semantyczny". Po ustawieniu wartości "extractive" zapytanie formułuje i zwraca odpowiedzi z kluczowych fragmentów w najbardziej semantycznie sklasyfikowanych dokumentach. Wartość domyślna to jedna odpowiedź, ale można określić maksymalnie 10, dodając liczbę. Na przykład wyrażenie "answers": "extractive|count-3" zwraca trzy odpowiedzi. Aby odpowiedź została zwrócona, w polu docelowym musi znajdować się dosłowna zawartość, która wygląda jak odpowiedź. Modele językowe używane na potrzeby odpowiedzi są trenowane w celu rozpoznawania odpowiedzi, a nie generowania ich. Ponadto samo zapytanie musi wyglądać jak pytanie. |
wersja interfejsu API | struna | Wymagane. Wersja interfejsu API REST używana dla żądania. Aby uzyskać listę obsługiwanych wersji, zobacz wersje interfejsu API. W przypadku tej operacji wersja interfejsu API jest określana jako parametr identyfikatora URI niezależnie od tego, czy wywołujesz Search Documents za pomocą polecenia GET lub POST. |
captions (wersja zapoznawcza) | struna | Fakultatywny. Prawidłowe wartości to "none" i "extractive". Wartość domyślna to "none". Ten parametr jest prawidłowy tylko wtedy, gdy typ zapytania jest "semantyczny". Po ustawieniu wartości "extractive" zapytanie zwraca podpisy wyodrębnione z kluczowych fragmentów w najwyższych rangą dokumentach. Gdy podpisy są ustawione na "wyodrębniające", wyróżnianie jest domyślnie włączone i można je skonfigurować, dołączając znak potoku "|", po którym następuje opcja "wyróżnij-<true/false>", na przykład "extractive|highlight-true". |
$count | boolowski | Fakultatywny. Prawidłowe wartości to "true" lub "false". Wartość domyślna to "false". W przypadku wywołania funkcji POST ten parametr ma nazwę count zamiast $count. Określa, czy pobrać łączną liczbę wyników. Ta wartość to liczba wszystkich dokumentów, które są zgodne z parametrami wyszukiwania i $filter, ignorując $top i $skip. Ustawienie tej wartości na wartość "true" może obniżyć wydajność. Liczba jest dokładna, jeśli indeks jest stabilny, ale będzie w obszarze lub w raporcie wszelkie dokumenty, które są aktywnie dodawane, aktualizowane lub usuwane. Jeśli chcesz uzyskać tylko liczbę bez żadnych dokumentów, możesz użyć $top=0. |
aspekty lub aspekty | struna | Fakultatywny. Pole do aspektu według, gdzie pole jest przypisywane jako "facetable". W przypadku wywołania metody GET facet jest polem (facet: field1 ). Po wywołaniu metody POST ten parametr ma nazwę facets zamiast facet i jest określony jako tablica (facets: [field1, field2, field3] ). Ciąg może zawierać parametry, aby dostosować aspekty, wyrażone jako pary nazwa-wartość rozdzielona przecinkami.
Prawidłowe wartości to "count", "sort", "values", "interval" i "timeoffset". "count" jest maksymalną liczbą terminów aspektowych; wartość domyślna to 10. Nie ma górnego limitu liczby terminów, ale wyższe wartości obniżają wydajność, zwłaszcza jeśli pole aspektowe zawiera dużą liczbę unikatowych terminów. Na przykład "facet=category,count:5" pobiera pięć pierwszych kategorii w wynikach aspektu. Jeśli parametr count jest mniejszy niż liczba unikatowych terminów, wyniki mogą nie być dokładne. Wynika to ze sposobu dystrybuowania zapytań aspektowych między fragmentami. Aby uzyskać dokładną liczbę we wszystkich fragmentach, możesz ustawić liczbę na zero lub wartość większą lub równą liczbie unikatowych wartości w polu aspektowym. Kompromis polega na zwiększonym opóźnieniu. "sort" można ustawić na "count", "-count", "value", "-value". Użyj funkcji count, aby posortować malejąco według liczby. Użyj -count, aby posortować rosnąco według liczby. Użyj wartości, aby sortować rosnąco według wartości. Użyj -value, aby posortować malejąco według wartości (na przykład "facet=category,count:3,sort:count" pobiera trzy pierwsze kategorie w wynikach aspektu w kolejności malejącej o liczbę dokumentów z każdą nazwą miasta). Jeśli trzy pierwsze kategorie to Budget, Motel i Luxury, a Budget ma pięć trafień, Motel ma sześć, a Luxury ma cztery, to zasobniki są w kolejności Motel, Budget, Luxury. Dla -value, "facet=rating,sort:-value" tworzy zasobniki dla wszystkich możliwych klasyfikacji, w kolejności malejącej według wartości (na przykład jeśli klasyfikacje są z zakresu od 1 do 5, zasobniki są uporządkowane 5, 4, 3, 2, 1, niezależnie od liczby dokumentów pasujących do każdej klasyfikacji). wartości "values" można ustawić na wartości liczbowe rozdzielane potokiem lub Edm.DateTimeOffset określające dynamiczny zestaw wartości wpisu aspektu (na przykład "facet=baseRate,values:10 | 20" produkuje trzy zasobniki: jeden dla stawki bazowej 0 do 10, jeden dla 10 do 20, a drugi na 20 i wyższe). Ciąg "facet=lastRenovationDate,values:2010-02-01T00:00:00Z" tworzy dwa zasobniki: jeden dla hoteli odnowionych przed lutym 2010 r., a drugi dla hoteli odnowionych 1 lutego 2010 r. lub nowszych. Wartości muszą być wymienione w kolejności sekwencyjnej, rosnącej, aby uzyskać oczekiwane wyniki. "interval" to interwał liczby całkowitej większy niż 0 dla liczb, lub minuty, godziny, dnia, tygodnia, miesiąca, kwartału, roku dla wartości daty/godziny. Na przykład "facet=baseRate,interval:100" tworzy zasobniki na podstawie zakresów szybkości bazowych o rozmiarze 100. Jeśli stawki bazowe wynoszą od 60 USD do 600 USD, będą przedziały dla 0-100, 100-200, 200-300, 300-400, 400-500 i 500-600. Ciąg "facet=lastRenovationDate,interval:year" tworzy jeden zasobnik dla każdego roku, kiedy hotele zostały odnowione. można ustawić wartość "timeoffset" na ([+-]hh:mm, [+-]hhmm lub [+-]hh). Jeśli jest używany, parametr timeoffset musi być połączony z opcją interwału i tylko wtedy, gdy jest stosowany do pola typu Edm.DateTimeOffset. Wartość określa przesunięcie czasu UTC na konto w ustawieniu granic czasu. Na przykład: "facet=lastRenovationDate,interval:day,timeoffset:-01:00" używa granicy dnia rozpoczynającej się o 01:00:00 UTC (północ w docelowej strefie czasowej). liczby i sortowania można połączyć w tej samej specyfikacji aspektu, ale nie można ich łączyć z interwałami ani wartościami, a interwał i wartości nie mogą być łączone razem. aspekty interwału w dacie są obliczane na podstawie godziny UTC, jeśli nie określono przesunięcia czasu. Na przykład: dla parametru "facet=lastRenovationDate,interval:day", granica dnia rozpoczyna się o 00:00:00 UTC. |
featuresMode (wersja zapoznawcza) | boolowski | Fakultatywny. Prawidłowe wartości to "włączone" i "wyłączone". Wartość domyślna to "disabled". Wartość określająca, czy wyniki powinny zawierać funkcje wyników zapytania, używane do obliczania wyniku istotności dokumentu w odniesieniu do zapytania, takiego jak podobieństwo poszczególnych pól. Użyj opcji "enabled", aby uwidocznić więcej funkcji wyników zapytania: na wynik podobieństwa pola, częstotliwość terminu pola i liczbę unikatowych tokenów dopasowanych w polu. Aby uzyskać więcej informacji, zobacz Podobieństwo i ocenianie. |
$filter | struna | Fakultatywny. Wyrażenie wyszukiwania strukturalnego w standardowej składni OData. Filtrowalne pola mogą być używane tylko w filtrze. W przypadku wywołania funkcji POST ten parametr ma nazwę filter zamiast $filter. Zobacz Składnia wyrażeń OData dla usługi Azure AI Search, aby uzyskać szczegółowe informacje na temat podzestawu gramatyki wyrażeń OData obsługiwanej przez usługę Azure AI Search. |
wyróżnić | struna | Fakultatywny. Zestaw nazw pól rozdzielonych przecinkami używanych do wyróżniania trafień. Do wyróżniania trafień można używać tylko pól z możliwością wyszukiwania. Domyślnie usługa Azure AI Search zwraca maksymalnie pięć wyróżnień na pole. Limit można skonfigurować dla pola, dołączając ciąg "-<max # wyróżniania>" zgodnie z nazwą pola. Na przykład wyrażenie "highlight=title-3,description-10" zwraca maksymalnie trzy wyróżnione trafienia z pola tytułu i maksymalnie 10 trafień z pola opisu. Maksymalna liczba wyróżnień musi być liczbą całkowitą z zakresu od 1 do 1000 włącznie. |
highlightPostTag | struna | Fakultatywny. Wartość domyślna to "</em>" . Tag ciągu dołączany do wyróżnionego terminu. Należy ustawić element z elementem highlightPreTag. Zastrzeżone znaki w adresie URL muszą być zakodowane procentowo (na przykład %23 zamiast #). |
highlightPreTag | struna | Fakultatywny. Wartość domyślna to "</em>" . Tag ciągu, który poprzedza wyróżniony termin. Należy ustawić element highlightPostTag. Zastrzeżone znaki w adresie URL muszą być zakodowane procentowo (na przykład %23 zamiast #). |
minimumCoverage | liczba całkowita | Fakultatywny. Prawidłowe wartości to liczba z zakresu od 0 do 100, wskazująca procent indeksu, który musi być dostępny do obsługi zapytania, zanim będzie można je zgłosić jako sukces. Wartość domyślna to "100".
10 procent pokrycia oznacza, że wszystkie fragmenty odpowiedziały na żądanie (ani problemy z kondycją usługi, ani działania konserwacyjne zmniejszyły pokrycie). W ustawieniu domyślnym wartość mniejszej niż pełne pokrycie zwraca kod stanu HTTP 503. obniżenie minimalnejCoverage może być przydatne, jeśli występują błędy 503 i chcesz zwiększyć prawdopodobieństwo powodzenia zapytania, zwłaszcza w przypadku usług skonfigurowanych dla jednej repliki. Jeśli ustawisz wartość minimalnąCoverage i wyszukiwanie powiedzie się, zwraca wartość HTTP 200 i uwzględnij @search.coverage w odpowiedzi wskazującej wartość procentową indeksu, który został uwzględniony w zapytaniu. W tym scenariuszu nie wszystkie pasujące dokumenty mają gwarancję obecności w wynikach wyszukiwania, ale jeśli dostępność wyszukiwania jest ważniejsza niż kompletność, zmniejszenie pokrycia może być opłacalną strategią ograniczania ryzyka. |
$orderby | struna | Fakultatywny. Lista wyrażeń rozdzielonych przecinkami w celu sortowania wyników według. Po wywołaniu polecenia POST ten parametr ma nazwę orderby zamiast $orderby. Każde wyrażenie może być nazwą pola lub wywołaniem funkcji geo.distance(). Po każdym wyrażeniu może występować wyrażenie "asc", aby wskazać rosnąco, i "desc", aby wskazać malejąco. Jeśli w polu sortowania istnieją wartości null, wartości null są wyświetlane jako pierwsze w kolejności rosnącej i ostatnio w kolejności malejącej. Wartość domyślna to kolejność rosnąca. Więzi zostaną przerwane przez wyniki dopasowania dokumentów. Jeśli nie określono $orderby, domyślna kolejność sortowania malejąco według wyniku dopasowania dokumentu. Istnieje limit 32 klauzul dla $orderby. |
queryLanguage (wersja zapoznawcza) | struna | Fakultatywny. Prawidłowe wartości to obsługiwany język. Wartość domyślna to "en-us". Ten parametr należy ustawić, jeśli używasz metody speller=lexicon lub queryType=semantic. Język określony w queryLanguage jest używany zarówno do sprawdzania pisowni, jak i przez semantyczne modele, które ponownie korbuje wyniki i wyodrębnia podpis lub odpowiedź. Biblioteki używane w języku queryLanguage są niezależne od innych atrybutów pól opartych na ustawieniach regionalnych, takich jak analizatory języka używane do indeksowania i wyszukiwania pełnotekstowego. |
queryType | struna | Fakultatywny. Prawidłowe wartości to "simple", "full" lub "semantic" (wersja zapoznawcza). Wartość domyślna to "simple". Ta wartość jest ignorowana dla wyszukiwania wektorów, ale dotyczy wyszukiwania tekstu w scenariuszach hybrydowych.
"proste" interpretuje ciągi zapytań przy użyciu prostej składni zapytania, która umożliwia symbole, takie jak + , * i "" . Zapytania są domyślnie oceniane we wszystkich polach z możliwością wyszukiwania (lub polach wskazanych w polach wyszukiwania) w każdym dokumencie.
"full" interpretuje ciągi zapytań przy użyciu pełnej składni zapytania Lucene, która umożliwia wyszukiwanie specyficzne dla pola i ważone. Wyszukiwanie zakresu w języku zapytań Lucene nie jest obsługiwane na rzecz $filter, która oferuje podobne funkcje. "semantyka" zwiększa precyzję wyników wyszukiwania przez ponowne korbowanie pierwszych 50 dopasowań przy użyciu modelu klasyfikacji wyszkolonego w korpusie Bing dla zapytań wyrażonych w języku naturalnym, w przeciwieństwie do słów kluczowych. Jeśli ustawisz typ zapytania na semantyczny, musisz również ustawić element queryLanguage i semanticConfiguration. Opcjonalnie możesz ustawić odpowiedzi, jeśli chcesz również zwrócić 3 odpowiedzi, jeśli dane wejściowe zapytania zostały sformułowane w języku naturalnym ("co to jest ...), a opcjonalnie możesz ustawić transkrywy w celu wyodrębnienia kluczowych fragmentów z najwyższych rangą dokumentów. |
scoringParameter | struna | Fakultatywny. Wskazuje wartości dla każdego parametru zdefiniowanego w funkcji oceniania (na przykład referencePointParameter) przy użyciu formatu "name-value1,value2,..." W przypadku wywołania metody POST ten parametr ma nazwę scoringParameters zamiast ocenianiaParameter. Ponadto należy określić ją jako tablicę ciągów w formacie JSON, w której każdy ciąg jest oddzielną parą name-values.
W przypadku profilów oceniania, które zawierają funkcję, należy oddzielić funkcję od listy danych wejściowych znakiem - . Na przykład funkcja o nazwie "mylocation" to "&scoringParameter=mylocation--122.2,44.8". Pierwsza kreska oddziela nazwę funkcji od listy wartości, a druga kreska jest częścią pierwszej wartości (długość geograficzna w tym przykładzie).
W przypadku parametrów oceniania, takich jak pod kątem zwiększania tagów, które mogą zawierać przecinki, można uciec od dowolnych takich wartości na liście przy użyciu pojedynczych cudzysłowów. Jeśli same wartości zawierają pojedyncze cudzysłowy, możesz je uniknąć, podwojając. Załóżmy, że masz parametr zwiększający tag o nazwie "mytag" i chcesz zwiększyć wartości tagów "Hello, O'Brien" i "Smith", opcja ciągu zapytania to "&scoringParameter=mytag-'Hello, O''Brien',Smith". Cudzysłowy są wymagane tylko dla wartości zawierających przecinki. |
scoringProfile | struna | Fakultatywny. Nazwa profilu oceniania do oceny wyników dla pasujących dokumentów w celu sortowania wyników. |
scoringStatistics | struna | Fakultatywny. Prawidłowe wartości to "local" lub "global". Wartość domyślna to "local". Określ, czy chcesz obliczyć statystyki oceniania, takie jak częstotliwość dokumentów, globalnie (we wszystkich fragmentach) w celu uzyskania bardziej spójnego oceniania, czy lokalnie (na bieżącym fragmentze) w celu uzyskania mniejszego opóźnienia. Zobacz Statystyki oceniania w usłudze Azure AI Search. Statystyki oceniania będą zawsze obliczane lokalnie dla terminów, które używają wyszukiwania rozmytego ('~'). |
szukać | struna | Fakultatywny. Tekst do wyszukania. Ta wartość jest ignorowana dla wyszukiwania wektorów, ale dotyczy wyszukiwania tekstu w scenariuszach hybrydowych. W interfejsach API REST wszystkie pola z możliwością wyszukiwania są domyślnie przeszukiwane, chyba że określono pola wyszukiwania. W indeksie tekst w polu z możliwością wyszukiwania jest tokenizowany, więc wiele terminów można rozdzielić białym znakiem (na przykład : "search=hello world"). Aby dopasować dowolny termin, użyj * (może to być przydatne w przypadku zapytań filtru logicznego). Pominięcie tego parametru ma taki sam efekt jak ustawienie go na * . Aby uzyskać szczegółowe informacje na temat składni wyszukiwania, zobacz Składnia prostego zapytania.
Wyniki czasami mogą być zaskakujące podczas wykonywania zapytań dotyczących pól z możliwością wyszukiwania. Tokenizer zawiera logikę do obsługi przypadków typowych dla tekstu w języku angielskim, takich jak apostrofy, przecinki w liczbach itd. Na przykład wyrażenie "search=123,456" będzie pasować do pojedynczego terminu "123 456", a nie pojedynczych terminów "123" i "456", ponieważ przecinki są używane jako separatory tysięcy dla dużych liczb w języku angielskim. Z tego powodu zalecamy używanie białych znaków, a nie znaków interpunkcyjnych, aby oddzielić terminy w parametrze wyszukiwania. |
searchMode | struna | Fakultatywny. Prawidłowe wartości to "any" lub "all" Defaults to "any". Określa, czy dowolne lub wszystkie terminy wyszukiwania muszą być zgodne w celu zliczenia dokumentu jako dopasowania. |
pola wyszukiwania | struna | Fakultatywny. Lista nazw pól rozdzielanych przecinkami do wyszukiwania określonego tekstu. Pola docelowe muszą być oznaczone jako możliwe do wyszukiwania w schemacie indeksu i muszą być typu Edm.String , Edm.ComplexType lub Collection(Edm.String) . |
$select | struna | Fakultatywny. Lista pól rozdzielonych przecinkami do uwzględnienia w zestawie wyników. W tej klauzuli można uwzględnić tylko pola oznaczone jako możliwe do pobrania. Jeśli nieokreślone lub ustawione na * , wszystkie pola oznaczone jako możliwe do pobrania w schemacie zostaną uwzględnione w projekcji. Po wywołaniu polecenia POST ten parametr ma nazwę select zamiast $select. |
semanticConfiguration (wersja zapoznawcza) | struna | Fakultatywny. Wymagane, jeśli queryType="semantic". Nazwa semantycznej konfiguracji, która zawiera listę pól, które powinny być używane do semantycznego klasyfikowania, podpisów, wyróżnień i odpowiedzi. Aby uzyskać więcej informacji, zobacz Tworzenie semantycznego zapytania. |
sessionId | struna | Fakultatywny. Użycie identyfikatora sessionId pomaga zwiększyć spójność oceny istotności dla usług wyszukiwania z wieloma replikami. W konfiguracjach z wieloma replikami mogą występować niewielkie różnice między ocenami istotności poszczególnych dokumentów dla tego samego zapytania. Po podaniu identyfikatora sesji usługa dokłada wszelkich starań, aby skierować dane żądanie do tej samej repliki dla tej sesji. Należy się uważać, że ponowne użycie tych samych wartości identyfikatorów sesji wielokrotnie może zakłócać równoważenie obciążenia żądań między replikami i niekorzystnie wpływać na wydajność usługi wyszukiwania. Wartość używana jako sessionId nie może rozpoczynać się od znaku "_". Jeśli usługa nie ma żadnych replik, ten parametr nie ma wpływu na wydajność ani spójność wyników. |
$skip | liczba całkowita | Fakultatywny. Liczba wyników wyszukiwania do pominięcia. W przypadku wywołania metody POST ten parametr ma nazwę skip zamiast $skip. Ta wartość nie może być większa niż 100 000. Jeśli musisz skanować dokumenty w sekwencji, ale nie można użyć $skip z powodu tego ograniczenia, rozważ użycie $orderby w polu, które ma unikatowe wartości dla każdego dokumentu w indeksie (na przykład klucza dokumentu) i $filter z zapytaniem zakresu. |
speller (wersja zapoznawcza) | Struna | Fakultatywny. Prawidłowe wartości to "none" i "lexicon". Wartość domyślna to "none". Popraw kompletność przez poprawianie pisowni poszczególnych terminów zapytania wyszukiwania. Można go używać w prostych, pełnych i semantycznych typach zapytań. Jeśli jest używany, parametr sprawdzania pisowni wymaga elementu queryLanguage. Aby uzyskać więcej informacji i przykładów, zobacz Dodawanie sprawdzania pisowni do zapytań. |
$top | liczba całkowita | Fakultatywny. Liczba wyników wyszukiwania do pobrania. Wartość domyślna to 50. W przypadku wywołania funkcji POST ten parametr ma nazwę top zamiast $top. Jeśli określisz wartość większą niż 1000 i istnieje więcej niż 1000 wyników, zostanie zwróconych tylko pierwszych 1000 wyników wraz z linkiem do następnej strony wyników (zobacz "@odata.nextLink" w poniższym przykładzie).
usługa Azure AI Search używa stronicowania po stronie serwera, aby zapobiec pobieraniu zbyt wielu dokumentów jednocześnie przez zapytania. Domyślny rozmiar strony to 50, a maksymalny rozmiar strony to 1000. Oznacza to, że domyślnie wyszukiwanie dokumentów zwraca co najwyżej 50 wyników, jeśli nie określisz $top. Jeśli istnieje więcej niż 50 wyników, odpowiedź zawiera informacje dotyczące pobierania następnej strony maksymalnie 50 wyników (zobacz "@odata.nextLink" i "@search.nextPageParameters" w Przykłady poniżej. Podobnie, jeśli określisz wartość większą niż 1000 dla $top i istnieje więcej niż 1000 wyników, zwracane są tylko pierwsze 1000 wyników wraz z informacjami, aby pobrać następną stronę maksymalnie 1000 wyników. |
wektory (wersja zapoznawcza) | tablica | Fakultatywny. Typ obiektu w tablicy jest zapytaniem wektorowym. Parametry zapytania dla zapytań wektorowych.
"wartość" jest wektorową reprezentacją zapytania wyszukiwania. Ta reprezentacja musi być tworzona zewnętrznie. Usługa Azure AI Search nie tworzy osadzeń. "k" to liczba całkowita określająca liczbę najbliższych sąsiadów, które mają być zwracane jako pierwsze trafienia. Wartość domyślna to 50. Wartość minimalna to 1, a wartość maksymalna to 10 000. "fields" to rozdzielane przecinkami nazwy pól listy zawierające dane wektorowe. Na liście "pola" można uwzględnić tylko pola typu Collection(Edm.Single) . |
Odpowiedź
Kod stanu: 200 OK jest zwracany dla pomyślnej odpowiedzi. W tym artykule znajdują się dwie przykładowe odpowiedzi— po jednym dla semantycznego wyszukiwania i funkcjiMode.
Przykładowa odpowiedź dla zapytania semantycznego
W pierwszym przykładzie pokazano pełną odpowiedź dla najwyższego wyniku zapytania semantycznego "jak tworzyć chmury".
Wyrażenie "@search.answers" pojawia się podczas określania parametru odpowiedzi, a zapytanie i pola docelowe w indeksie zawierają zawartość, którą można rozpoznać jako odpowiedź. Tablica @search.answers zawierająca klucz, tekst i wyróżnienia. Wynik jest wskaźnikiem siły odpowiedzi.
"value" to treść odpowiedzi. @search.rerankerScore jest przypisywany przez semantyczny algorytm klasyfikacji i służy do klasyfikowania wyników (@search.score pochodzi z algorytmu podobieństwa BM25 używanego podczas oceniania początkowych wyników). Podpisy zawierają zwykły tekst i wyróżnione wersje. W tym przykładzie utworzono umiejętności rozpoznawania znaków OCR i rozpoznawania jednostek. Pola wyodrębnionej i scalonej zawartości znajdują się w odpowiedzi.
{
"@search.answers": [
{
"key": "aHR0cHM6Ly9oZWlkaXN0YmxvYnN0b3JhZ2UuYmxvYi5jb3JlLndpbmRvd3MubmV0L25hc2EtZWJvb2stMS01MC9wYWdlLTQ1LnBkZg2",
"text": "Sunlight heats the land all day, warming that moist air and causing it to rise high into the atmosphere until it cools and condenses into water droplets. Clouds generally form where air is ascending (over land in this case), but not where it is descending (over the river).",
"highlights": "Sunlight heats the land all day, warming that moist air and causing it to rise high into the atmosphere until it cools and condenses into water droplets. Clouds generally form<em> where air is ascending</em> (over land in this case), but not where it is<em> descending</em> (over the river).",
"score": 0.94639826
}
],
"value": [
{
"@search.score": 0.5479723,
"@search.rerankerScore": 1.0321671911515296,
"@search.captions": [
{
"text": "Like all clouds, it forms when the air reaches its dew point—the temperature at which an air mass is cool enough for its water vapor to condense into liquid droplets. This false-color image shows valley fog, which is common in the Pacific Northwest of North America.",
"highlights": "Like all<em> clouds</em>, it<em> forms</em> when the air reaches its dew point—the temperature at which an air mass is cool enough for its water vapor to condense into liquid droplets. This false-color image shows valley<em> fog</em>, which is common in the Pacific Northwest of North America."
}
],
"content": "\nA\nT\n\nM\nO\n\nS\nP\n\nH\nE\n\nR\nE\n\nE\nA\n\nR\nT\n\nH\n\n34\n\nValley Fog\nCanada\n\nFog is essentially a cloud lying on the ground. Like all clouds, it forms when the air reaches its dew point—the temperature at \n\nwhich an air mass is cool enough for its water vapor to condense into liquid droplets.\n\nThis false-color image shows valley fog, which is common in the Pacific Northwest of North America. On clear winter nights, the \n\nground and overlying air cool off rapidly, especially at high elevations. Cold air is denser than warm air, and it sinks down into the \n\nvalleys. The moist air in the valleys gets chilled to its dew point, and fog forms. If undisturbed by winds, such fog may persist for \n\ndays. The Terra satellite captured this image of foggy valleys northeast of Vancouver in February 2010.\n\n\n",
"metadata_storage_path": "aHR0cHM6Ly9oZWlkaXN0YmxvYnN0b3JhZ2UuYmxvYi5jb3JlLndpbmRvd3MubmV0L25hc2EtZWJvb2stMS01MC9wYWdlLTQxLnBkZg2",
"people": [],
"locations": [
"Pacific Northwest",
"North America",
"Vancouver"
],
"merged_content": "\nA\nT\n\nM\nO\n\nS\nP\n\nH\nE\n\nR\nE\n\nE\nA\n\nR\nT\n\nH\n\n34\n\nValley Fog\nCanada\n\nFog is essentially a cloud lying on the ground. Like all clouds, it forms when the air reaches its dew point—the temperature at \n\nwhich an air mass is cool enough for its water vapor to condense into liquid droplets.\n\nThis false-color image shows valley fog, which is common in the Pacific Northwest of North America. On clear winter nights, the \n\nground and overlying air cool off rapidly, especially at high elevations. Cold air is denser than warm air, and it sinks down into the \n\nvalleys. The moist air in the valleys gets chilled to its dew point, and fog forms. If undisturbed by winds, such fog may persist for \n\ndays. The Terra satellite captured this image of foggy valleys northeast of Vancouver in February 2010.\n\n\n",
"text": [],
"layoutText": []
}
]
}
Przykładowa odpowiedź dla funkcjiMode
W tym przykładzie przedstawiono dane wyjściowe "@search.features" z zapytania zawierającego funkcjeMode.
{
"@odata.count": # (if $count=true was provided in the query),
"@search.coverage": # (if minimumCoverage was provided in the query),
"@search.facets": { (if faceting was specified in the query)
"facet_field": [
{
"value": facet_entry_value (for non-range facets),
"from": facet_entry_value (for range facets),
"to": facet_entry_value (for range facets),
"count": number_of_documents
}
],
...
},
"@search.nextPageParameters": { (request body to fetch the next page of results if not all results could be returned in this response and Search was called with POST)
"count": ... (value from request body if present),
"facets": ... (value from request body if present),
"featuresMode" : ... (value from request body if present),
"filter": ... (value from request body if present),
"highlight": ... (value from request body if present),
"highlightPreTag": ... (value from request body if present),
"highlightPostTag": ... (value from request body if present),
"minimumCoverage": ... (value from request body if present),
"orderby": ... (value from request body if present),
"scoringParameters": ... (value from request body if present),
"scoringProfile": ... (value from request body if present),
"scoringStatistics": ... (value from request body if present),
"search": ... (value from request body if present),
"searchFields": ... (value from request body if present),
"searchMode": ... (value from request body if present),
"select": ... (value from request body if present),
"sessionId" : ... (value from request body if present),
"skip": ... (page size plus value from request body if present),
"top": ... (value from request body if present minus page size),
},
"value": [
{
"@search.score": document_score (if a text query was provided),
"@search.highlights": {
field_name: [ subset of text, ... ],
...
},
"@search.features": {
"field_name": {
"uniqueTokenMatches": feature_score,
"similarityScore": feature_score,
"termFrequency": feature_score,
},
...
},
key_field_name: document_key,
field_name: field_value (retrievable fields or specified projection),
...
},
...
],
"@odata.nextLink": (URL to fetch the next page of results if not all results could be returned in this response; Applies to both GET and POST)
}
Przykłady
Więcej przykładów można znaleźć w składni wyrażenia OData dla usługi Azure AI Search.
Przykład: proste wyszukiwania
Znajdowanie dokumentów w indeksie przy użyciu prostej składni zapytań. To zapytanie zwraca hotele, w których pola z możliwością wyszukiwania zawierają terminy "comfort" i "location", ale nie "motel":
Get /indexes/hotels/docs?search=comfort +location –motel&searchMode=all&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
{
"search": "comfort +location -motel",
"searchMode": "all"
}
Napiwek
Użycie searchMode=all
zastępuje wartość domyślną searchMode=any
, zapewniając, że -motel
oznacza "AND NOT" zamiast "OR NOT". Bez searchMode=all
otrzymujesz wartość "OR NOT", która rozszerza się, a nie ogranicza wyników wyszukiwania, i może to być sprzeczne z intuicją dla niektórych użytkowników.
Przykład: pełne wyszukiwania Lucene
Znajdź dokumenty w indeksie przy użyciu składni zapytań Lucene (zobacz Składnia zapytań Lucene w usłudze Azure AI Search). To zapytanie zwraca hotele, w których pole kategorii zawiera termin "budget" i wszystkie pola z możliwością wyszukiwania zawierające frazę "ostatnio odnowiony". Dokumenty zawierające frazę "niedawno odnowiony" są klasyfikowane wyżej w wyniku terminu zwiększenie wartości (3)
GET /indexes/hotels/docs?search=Category:budget AND \"recently renovated\"^3&searchMode=all&api-version=2021-04-30-Preview&querytype=full`
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
{
"search": "Category:budget AND \"recently renovated\"^3",
"queryType": "full",
"searchMode": "all"
}
przykład : semantyczne wyszukiwania
Wywołaj semantyczny model klasyfikacji z odpowiedziami, podpisami i wyróżnioną zawartością. Odpowiedź dla tego zapytania można znaleźć w poprzedniej sekcji.
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
{
"search": "how do clouds form",
"queryType": "semantic",
"semanticConfiguration": "my-semantic-config",
"queryLanguage": "en-us",
"answers": "extractive",
"captions": "extractive",
"count": "true"
}
Przykład: wyszukiwanie wektorów
W przypadku indeksu z polami typu Collection(Edm.Single)
i konfiguracją wektora można określić parametry zapytania wektorowego. Parametry zapytania wektorowego obejmują pola wektorów, które są w zakresie zapytania, "k" liczba trafień pierwszych do zwrócenia i wektorowa reprezentacja danych wejściowych zapytania.
Dodanie parametru "select" jest przydatne, jeśli indeks zawiera pola tekstowe. Dopasowywanie i istotność są oparte na wektorach, ale pola zawierające zawartość czytelną dla człowieka są bardziej przydatne dla osoby czytającej wyniki. Alternatywnie możesz napisać kod, który konwertuje dane wektorowe w wynikach wyszukiwania na tekst.
POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version={{api-version}}
Content-Type: application/json
api-key: {{admin-api-key}}
{
"search": (this parameter is ignored in vector search),
"vectors": [{
"value": [
-0.009154141,
0.018708462,
. . .
-0.02178128,
-0.00086512347
],
"fields": "contentVector",
"k": 5
}],
"select": "title, content, category"
}
Przykład: orderby
Przeszukaj indeks i zwróć wyniki posortowane według daty w kolejności malejącej.
GET /indexes/hotels/docs?search=*&$orderby=LastRenovationDate desc&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
{
"search": "*",
"orderby": "LastRenovationDate desc"
}
Przykład: filtrowanie przy użyciu wyrażenia OData
Pobieranie dokumentów pasujących do określonego wyrażenia filtru:
GET /indexes/hotels/docs?$filter=(Rooms/BaseRate ge 60 and Rooms/BaseRate lt 300) or HotelName eq 'Fancy Stay'&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
{
"filter": "(Rooms/BaseRate ge 60 and Rooms/BaseRate lt 300) or HotelName eq 'Fancy Stay'"
}
przykład : wyszukiwania aspektowego
W wyszukiwaniu aspektowym wyszukaj indeks i pobierz aspekty pod kątem kategorii, klasyfikacji, tagów, a także elementów o wartości baseRate w określonych zakresach.
GET /indexes/hotels/docs?search=*&facet=Category&facet=Rating&facet=Tags&facet=Rooms/BaseRate,values:80|150|220&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
{
"search": "test",
"facets": [ "Category", "Rating", "Tags", "Rooms/BaseRate,values:80|150|220" ]
}
Zwróć uwagę, że ostatni aspekt znajduje się w polu podrzędnym. Aspekty zliczają dokument nadrzędny (Hotele) i nie pośrednie dokumenty podrzędne (Pokoje), więc odpowiedź określi liczbę hoteli, które mają jakiekolwiek pokoje w każdym zasobniku cen.
Przykład: zawężanie zapytania aspektowego
Używając filtru, zawężaj poprzedni wynik zapytania aspektowego po wybraniu przez użytkownika pozycji Ocena 3 i kategoria "Motel".
GET /indexes/hotels/docs?search=*&facet=tags&facet=Rooms/BaseRate,values:80|150|220&$filter=Rating eq 3 and Category eq 'Motel'&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
{
"search": "test",
"facets": [ "tags", "Rooms/BaseRate,values:80|150|220" ],
"filter": "Rating eq 3 and Category eq 'Motel'"
}
Przykład: wyszukiwanie aspektowe z limitami dla każdej kategorii
W wyszukiwaniu aspektowym ustaw górny limit unikatowych terminów zwracanych w zapytaniu. Wartość domyślna to 10, ale można zwiększyć lub zmniejszyć tę wartość przy użyciu parametru count atrybutu facet. Ten przykład zwraca aspekty dla miasta, ograniczone do 5.
GET /indexes/hotels/docs?search=*&facet=Address/City,count:5&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
{
"search": "test",
"facets": [ "Address/City,count:5" ]
}
przykład : wyszukiwania w polu
Przeszukiwanie indeksu w określonych polach (na przykład pole języka)
GET /indexes/hotels/docs?search=hôtel&searchFields=Description_fr&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
{
"search": "hôtel",
"searchFields": "Description_fr"
}
Przeszukaj indeks w wielu polach. Można na przykład przechowywać pola z możliwością wyszukiwania i wykonywać zapytania w wielu językach w tym samym indeksie. Jeśli opisy angielskie i francuskie współistnieją w tym samym dokumencie, możesz zwrócić dowolne lub wszystkie w wynikach zapytania:
GET /indexes/hotels/docs?search=hotel&searchFields=Description,Description_fr&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
{
"search": "hotel",
"searchFields": "Description, Description_fr"
}
Jednocześnie można wykonywać zapytania tylko o jeden indeks. Nie twórz wielu indeksów dla każdego języka, chyba że planujesz wykonywać zapytania pojedynczo.
Przykład: stronicowanie wyników
Pobierz pierwszą stronę elementów (rozmiar strony to 10):
GET /indexes/hotels/docs?search=*&$skip=0&$top=10&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
{
"search": "*",
"skip": 0,
"top": 10
}
Pobierz drugą stronę elementów (rozmiar strony to 10):
GET /indexes/hotels/docs?search=*&$skip=10&$top=10&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
{
"search": "*",
"skip": 10,
"top": 10
}
Przykład: ograniczanie pól w zestawie wyników
Pobieranie określonego zestawu pól:
GET /indexes/hotels/docs?search=*&$select=HotelName,Description&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
{
"search": "*",
"select": "HotelName, Description"
}
Przykład: wyróżnianie trafień w wynikach
Przeszukaj indeks i zwróć fragmenty z wyróżnionymi trafieniami:
GET /indexes/hotels/docs?search=something&highlight=Description&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
{
"search": "something",
"highlight": "Description"
}
przykład : wyszukiwanie geoprzestrzenne
Przeszukaj indeks i zwróć dokumenty posortowane z bliżej do dalej od lokalizacji referencyjnej:
GET /indexes/hotels/docs?search=something&$orderby=geo.distance(Location, geography'POINT(-122.12315 47.88121)')&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
{
"search": "something",
"orderby": "geo.distance(Location, geography'POINT(-122.12315 47.88121)')"
}
Przykład: "znajdź według mnie" (zwiększ znaczenie pobliskich lokalizacji
Przeszukaj indeks przy założeniu, że istnieje profil oceniania o nazwie "geo" z dwoma funkcjami oceniania odległości, jeden definiujący parametr o nazwie "currentLocation" i jeden definiujący parametr o nazwie "lastLocation". W poniższym przykładzie parametr "currentLocation" ma ogranicznik pojedynczej kreski (-
). Następuje po nim współrzędnych długości i szerokości geograficznej, gdzie długość geograficzna jest wartością ujemną.
GET /indexes/hotels/docs?search=something&scoringProfile=geo&scoringParameter=currentLocation--122.123,44.77233&scoringParameter=lastLocation--121.499,44.2113&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
{
"search": "something",
"scoringProfile": "geo",
"scoringParameters": [ "currentLocation--122.123,44.77233", "lastLocation--121.499,44.2113" ]
}
Przykład: wykonywanie zapytań względem pełnego indeksu zamiast fragmentów
Znajdź dokumenty w indeksie, jednocześnie preferując spójne ocenianie w przypadku mniejszych opóźnień. To zapytanie oblicza częstotliwości dokumentów w całym indeksie i dokłada wszelkich starań, aby kierować tę samą replikę do wszystkich zapytań w ramach tej samej "sesji", co pomaga wygenerować stabilną i powtarzalną klasyfikację.
GET /indexes/hotels/docs?search=hotel&sessionId=mySessionId&scoringStatistics=global&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
{
"search": "hotel",
"sessionId": "mySessionId",
"scoringStatistics" :"global"
}
Przykład: statystyka oceniania (featuresMode)
Znajdź dokumenty w indeksie i zwróć listę funkcji pobierania informacji dla każdego wyniku opisującego ocenianie między dopasowanym dokumentem a zapytaniem. Zapytanie oblicza również częstotliwości dokumentów w całym indeksie, aby wygenerować bardziej spójne ocenianie.
GET /indexes/hotels/docs?search=hotel&featuresMode=enabled&scoringStatistics=global&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
{
"search": "hotel",
"featuresMode": "enabled",
"scoringStatistics" :"global"
}
Przykład odpowiedzi zawierającej search.features
wygląda podobnie do następującego:
"@search.score": 0.91875637,
"@search.features": {
"Description": {
"uniqueTokenMatches": 1,
"similarityScore": 0.2917966,
"termFrequency": 2
},
"HotelName": {
"uniqueTokenMatches": 1,
"similarityScore": 0.44458693,
"termFrequency": 1
}
. . .
Definicje
Ta sekcja zawiera szczegółowe informacje o parametrach, które są zbyt złożone, aby uwzględnić je w tabeli głównej.
Łącze | Opis |
---|---|
queryLanguage | Lista obsługiwanych języków sprawdzania pisowni i wyszukiwania semantycznego. |
queryLanguage
Prawidłowe wartości parametru queryLanguage znajdują się w poniższej tabeli w kolumnie "queryLanguage" i nie są uwzględniane wielkości liter. Wartość domyślna parametru jako całości to "en-us". W każdym języku istnieje domyślny wariant dla każdego dwuznakowego kodu języka. Jeśli na przykład określisz wartość "es", domyślnie jest używana wartość "es-us". Parametr queryLanguage jest wymagany dla żądania zapytania, które zawiera "queryType=semantic" lub "speller=lexicon". Istnieje tylko jedna wartość queryLanguage dla całego żądania i ta wartość będzie używana do semantycznego klasyfikowania, podpisów, odpowiedzi i sprawdzania pisowni (nie ma przesłonięć poszczególnych funkcji).
Obecnie obsługa języka różni się w zależności od funkcji. Tylko angielski, hiszpański, francuski i niemiecki są obsługiwane dla pełnego zestawu funkcji, ale zwróć uwagę, że sprawdzanie pisowni implementuje mniej wariantów.
Jeśli określisz kod języka, który nie jest obsługiwany przez daną funkcję, na przykład EN-GB z funkcją sprawdzania pisowni, usługa zwróci błąd HTTP 400.
Aby uzyskać więcej informacji na temat korzystania z każdej funkcji, zobacz Enable semantic ranking and captions, Return a semantic answeri Add spell check to queries.
Oznaczenie "(wersja zapoznawcza)" wskazuje, że testowanie poprawności we wszystkich funkcjach (semantyczne klasyfikowanie, podpisy, odpowiedzi i sprawdzanie pisowni) jest w toku lub oczekuje. Zachęcamy do używania wszystkich wariantów języka w poniższej tabeli, ale zalecamy więcej testów języków w wersji zapoznawczej, aby upewnić się, że wyniki są prawidłowe dla Zawartości. Języki ze znacznikiem wyboru i bez oznaczenia wersji zapoznawczej zostały zweryfikowane przy użyciu równoważnych zestawów danych z wymiernym wzrostem istotności.
Język | queryLanguage | Semantyczny ranger i podpisy | Semantyczna odpowiedź | Speller |
---|---|---|---|---|
Angielski [en ] |
en, en-US (ustawienie domyślne), en-GB , en-IN , en-CA , en-AU |
✔️ | ✔️ | ✔️ (en, en-US ) |
Francuski [fr ] |
fr , fr-FR (ustawienie domyślne), fr-CA |
✔️ | ✔️ | ✔️ (fr, fr-FR ) |
Niemiecki [de ] |
de, de-DE (ustawienie domyślne) |
✔️ | ✔️ | ✔️ (de, de-DE ) |
Hiszpański [es ] |
es, es-ES (ustawienie domyślne), es-MX |
✔️ | ✔️ | ✔️ (es, es-ES ) |
Włoski [it ] |
it, it-IT (ustawienie domyślne) |
✔️ | ✔️ | |
Japoński [ja ] |
ja, ja-JP (ustawienie domyślne) |
✔️ | ✔️ (wersja zapoznawcza) | |
Chiński [zh ] |
zh, zh-CN (ustawienie domyślne), zh-TW |
✔️ | ✔️ (wersja zapoznawcza) | |
Portugalski [pt ] |
pt, pt-BR (ustawienie domyślne), pt-PT |
✔️ | ✔️ (wersja zapoznawcza) | |
Holenderski [nl ] |
nl, nl-BE, nl-NL (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | ✔️ (nl, nl-NL ) |
Arabski [ar ] |
ar, ar-SA (ustawienie domyślne), ar-EG, ar-MA, ar-KW, ar-JO |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Armeński |
hy-AM (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Bangla |
bn-IN (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Baskijski |
eu-ES (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Bułgarski [bg ] |
bg, bg-BG (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Kataloński [ca ] |
ca, ca-ES (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Chorwacki [hr ] |
hr, hr-HR (ustawienie domyślne), hr-BA |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Czeski [cs ] |
cs, cs-CZ (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Duński [da ] |
da, da-DK (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Estoński [et ] |
et, et-EE (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Fiński [fi ] |
fi, fi-FI (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Galicyjski |
gl-ES (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Grecki [el ] |
el, el-GR (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Gudżarati |
gu-IN (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Hebrajski |
he-IL (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Hindi [hi ] |
hi, hi-IN (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Węgierski [hu ] |
hu, hu-HU (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Islandia [is ] |
is, is-IS (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Indonezyjski [id ] |
id, id-ID (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Irlandzki |
ga-IE (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Kannada |
kn-IN (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Koreański [ko ] |
ko, ko-KR (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Łotewski [lv ] |
lv, lv-LV (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Litewski [lt ] |
lt, lt-LT (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Malayalam |
ml-IN (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Malezyjski [ms ] |
ms, ms-MY (ustawienie domyślne), ms-BN |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Marathi |
mr-IN (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Norweski [no ] |
nie, no-NO (ustawienie domyślne), nb-NO | ✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Perski |
fa-AE (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Polski [pl ] |
pl, pl-PL (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Pendżabski |
pa-IN (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Rumuński [ro ] |
ro, ro-RO (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Rosyjski [ru ] |
ru, ru-RU (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Serbski [sr ] (cyrylica lub łacińska) |
sr, sr-BA (ustawienie domyślne), sr-ME, sr-RS |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Słowacki [sk ] |
sk, sk-SK (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Słoweński [sl ] |
sl, sl-SL (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Tamil [ta ] |
ta, ta-IN (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Szwedzki [sv ] |
sv, sv-SE (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Telugu |
te-IN (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Tajski [th ] |
th, th-TH (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Turecki [tr ] |
tr, tr-TR (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Ukraiński [uk ] |
uk, uk-UA (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Urdu |
ur-PK (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) | |
Wietnamski [va ] |
va, vi-VN (ustawienie domyślne) |
✔️ (wersja zapoznawcza) | ✔️ (wersja zapoznawcza) |