Składnia zapytań Lucene w usłudze Wyszukiwanie AI platformy Azure

Note

Wyszukiwanie AI platformy Azure jest dostępna za pośrednictwem portalu Azure, interfejsów API REST i Azure SDKs. Jest także podstawą Foundry IQ — zarządzanej warstwy wiedzy, która przekształca treści przedsiębiorstwa w bazy wiedzy wielokrotnego użytku z uwzględnieniem uprawnień dla agentów w portalu Microsoft Foundry.

Podczas tworzenia zapytań w usłudze Wyszukiwanie AI platformy Azure możesz wybrać pełną składnię analizatora zapytań Lucene dla wyspecjalizowanych formularzy zapytań: symbol wieloznaczny, wyszukiwanie rozmyte, wyszukiwanie zbliżeniowe, wyrażenia regularne. Większość składni Lucene Query Parser jest implementowana bez zmian w usłudze Wyszukiwanie AI platformy Azure, z wyjątkiem wyszukiwań zakresowych, które są konstruowane za pomocą $filter wyrażeń.

Aby użyć pełnej składni Lucene, ustaw parametr queryType na full i przekaż wyrażenie zapytania wzorowane na symbole wieloznaczne, wyszukiwanie rozmyte lub jeden z innych formularzy zapytań obsługiwanych przez pełną składnię. W REST wyrażenia zapytań są udostępniane w parametrze search żądania Search Documents (REST API).

Przykład (pełna składnia)

Poniższy przykład to żądanie wyszukiwania skonstruowane przy użyciu pełnej składni. Ten konkretny przykład pokazuje wyszukiwanie po polach i wzmacnianie trafności fraz. Szuka hoteli, w których pole kategorii zawiera termin budget. Dokumenty zawierające frazę "recently renovated" otrzymują dodatkową wagę wzmacniającą i w rezultacie mogą zajmować wyższą pozycję w rankingu ze względu na wartość wzmocnienia frazy (3).

POST /indexes/hotels-sample/docs/search?api-version=2026-04-01
{
  "queryType": "full",
  "search": "category:budget AND \"recently renovated\"^3",
  "searchMode": "all"
}

Chociaż nie jest specyficzny dla żadnego typu zapytania, searchMode parametr jest istotny w tym przykładzie. Za każdym razem, gdy operatory znajdują się w zapytaniu, należy ogólnie ustawić searchMode=all , aby upewnić się, że wszystkie kryteria są zgodne.

Aby uzyskać więcej przykładów, zobacz Przykłady składni zapytań Lucene. Aby uzyskać szczegółowe informacje na temat żądania i parametrów zapytania, w tym searchMode, zapoznaj się z Search Documents (REST API).

Podstawy składni

Poniższe podstawy składni dotyczą wszystkich zapytań korzystających ze składni Lucene.

Ocena operatora w kontekście

Umieszczanie określa, czy symbol jest interpretowany jako operator, czy tylko inny znak w ciągu.

Na przykład w pełnej składni Lucene tylda (~) jest używana zarówno do wyszukiwania przybliżonego, jak i wyszukiwania bliskościowego. Po umieszczeniu po zacytowanej frazie ~ wywołuje wyszukiwanie w pobliżu. Po umieszczeniu na końcu terminu ~ wywołuje wyszukiwanie rozmyte.

W ramach terminu, takiego jak business~analyst, znak nie jest oceniany jako operator. W tym przypadku, przy założeniu, że zapytanie jest terminem lub zapytaniem frazy, pełnotekstowe wyszukiwanie z analizą leksykalną usuwa ~ i dzieli termin business~analyst na dwa: business LUB analyst.

Powyższy przykład to tylda (~), ale ta sama zasada ma zastosowanie do każdego operatora.

Ucieczka znaków specjalnych

Aby użyć dowolnych operatorów wyszukiwania w ramach tekstu wyszukiwania, należy użyć znaku ucieczki, poprzedzając go pojedynczym ukośnikiem odwrotnym (\). Na przykład w przypadku wyszukiwania symboli wieloznacznych w pliku https://, gdzie :// jest częścią ciągu zapytania, należy określić wartość search=https\:\/\/*. Podobnie wzorzec numeru telefonu ucieczki może wyglądać następująco \+1 \(800\) 642\-7676: .

Znaki specjalne, które wymagają ucieczki, obejmują następujące elementy:
+ - & | ! ( ) { } [ ] ^ " ~ * ? : \ /

Note

Chociaż ucieczka utrzymuje tokeny razem, analiza leksykalna podczas indeksowania może usuwać je. Na przykład standardowy analizator Lucene będzie przerywać wyrazy na łącznikach, białych znakach i innych znakach. Jeśli potrzebujesz znaków specjalnych w ciągu zapytania, może być potrzebny analizator, który zachowuje je w indeksie. Możliwe opcje obejmują analizatory języka naturalnego firmy Microsoft, które zachowują wyrazy z łącznikami, lub analizator niestandardowy dla bardziej skomplikowanych wzorców. Aby uzyskać więcej informacji, zobacz Częściowe terminy, wzorce i znaki specjalne.

Kodowanie niebezpiecznych i zastrzeżonych znaków w adresach URL

Upewnij się, że wszystkie niebezpieczne i zastrzeżone znaki są kodowane w adresie URL. Na przykład # jest niebezpiecznym znakiem, ponieważ jest to identyfikator fragmentu/kotwicy w adresie URL. Znak musi być zakodowany jako %23, jeśli jest używany w adresie URL. & i = są przykładami znaków zarezerwowanych, ponieważ rozdzielają parametry i określają wartości w usłudze Wyszukiwanie AI platformy Azure. Aby uzyskać więcej informacji, zobacz RFC1738: Uniform Resource Locators (URL).

Niebezpieczne znaki to " ` < > # % { } | \ ^ ~ [ ]. Zastrzeżone znaki to ; / ? : @ = + &.

Operatory logiczne

Operatory logiczne (Boolean) można osadzić w ciągu zapytania, aby zwiększyć dokładność dopasowania. Pełna składnia obsługuje operatory tekstu oprócz operatorów znaków. Zawsze określaj operatory logiczne tekstu (AND, OR, NOT) wielkimi literami.

Operator tekstu Character Example Usage
AND + wifi AND luxury Określa terminy, które musi zawierać dopasowanie. W tym przykładzie aparat zapytań wyszukuje dokumenty zawierające zarówno wifi, jak i luxury. Znak plus (+) może być również używany bezpośrednio przed terminem, aby go wymusić. Na przykład przewiduje, +wifi +luxury że oba terminy muszą znajdować się gdzieś w polu pojedynczego dokumentu.
OR (brak) 1 wifi OR luxury Znajduje dopasowanie po znalezieniu dowolnego terminu. W tym przykładzie mechanizm zapytań zwraca dopasowania w dokumentach zawierających wifi lub luxury, lub oba. W przypadku searchMode=any operatorem domyślnej koniunkcji jest LUB, więc wifi luxury jest równoważne wifi OR luxury. W programie searchMode=allużyj operatora jawnego OR , aby uzyskać to zachowanie.
NOT !, - wifi –luxury Zwraca dopasowanie w dokumentach, które wykluczają termin. Na przykład wifi –luxury wyszukuje dokumenty, które mają termin wifi, ale nie mają luxury.

1 Znak | nie jest obsługiwany dla operacji OR.

Operator logiczny NOT

Important

Operator NOT (NOT, !, lub -) zachowuje się inaczej w pełnej składni niż w prostej składni.

  • W prostej składni zapytania z negacją zawsze mają automatycznie dodawany symbol wieloznaczny. Na przykład zapytanie -luxury jest automatycznie rozszerzane na -luxury *.
  • Zapytań z negacją nie można łączyć z symbolami wieloznacznymi w pełnej składni. Na przykład zapytania -luxury * są niedozwolone.
  • W pełnej składni zapytania z pojedynczą negacją nie są dozwolone. Na przykład zapytanie -luxury jest niedozwolone.
  • W pełnej składni negacje będą zachowywać się tak, jakby zawsze były łączone z zapytaniem przy użyciu operatora AND, niezależnie od trybu wyszukiwania.
    • Na przykład pełne zapytanie wifi -luxury składniowe w pełnej składni pobiera tylko dokumenty zawierające termin wifi, a następnie stosuje negację -luxury do tych dokumentów.
  • Jeśli chcesz użyć negacji do przeszukiwania wszystkich dokumentów w indeksie, zalecana jest prosta składnia z trybem any wyszukiwania.
  • Jeśli chcesz użyć negacji do przeszukiwania podzestawu dokumentów w indeksie, zalecana jest pełna składnia lub prosta składnia ze wszystkimi trybami wyszukiwania.
Typ zapytania Tryb wyszukiwania Przykładowe zapytanie Behavior
Simple any wifi -luxury Zwraca wszystkie dokumenty w indeksie. Dokumenty z terminem "wifi" lub dokumenty, w których brakuje terminu "luksus", są klasyfikowane wyżej niż inne dokumenty. Zapytanie zostało rozwinięte do wifi OR -luxury OR *.
Simple all wifi -luxury Zwraca tylko dokumenty w indeksie, które zawierają termin "wifi" i nie zawierają terminu "luksus". Zapytanie zostało rozwinięte do wifi AND -luxury AND *.
Full any wifi -luxury Zwraca tylko dokumenty w indeksie, które zawierają termin "wifi", a następnie dokumenty zawierające termin "luksus" są usuwane z wyników.
Full all wifi -luxury Zwraca tylko dokumenty w indeksie, które zawierają termin "wifi", a następnie dokumenty zawierające termin "luksus" są usuwane z wyników.

Wyszukiwanie z użyciem pól

Można zdefiniować operację wyszukiwania w polu za pomocą składni fieldName:searchExpression, gdzie wyrażenie wyszukiwania może być pojedynczym wyrazem, frazą lub bardziej złożonym wyrażeniem w nawiasach, opcjonalnie z operatorami logicznymi. Oto kilka przykładów:

  • genre:jazz NOT history

  • artists:("Miles Davis" "John Coltrane")

Pamiętaj, aby umieścić wiele ciągów w cudzysłowie, jeśli chcesz, aby oba ciągi były oceniane jako pojedyncza jednostka, w tym przypadku wyszukując dwóch odrębnych artystów w artists polu.

Pole określone w fieldName:searchExpression musi być polem searchable. Zobacz Tworzenie indeksu , aby uzyskać szczegółowe informacje na temat sposobu użycia atrybutów indeksu w definicjach pól.

Note

W przypadku korzystania z wyrażeń wyszukiwania w polu nie trzeba używać parametru searchFields , ponieważ każde wyrażenie wyszukiwania w polu ma jawnie określoną nazwę pola. Można jednak nadal użyć parametru searchFields , jeśli chcesz uruchomić zapytanie, w którym niektóre części są ograniczone do określonego pola, a reszta może mieć zastosowanie do kilku pól. Na przykład, zapytanie search=genre:jazz NOT history&searchFields=description będzie pasować tylko do pola jazz, podczas gdy genre będzie pasować do pola NOT historydescription. Nazwa pola podana w parametrze fieldName:searchExpression zawsze ma pierwszeństwo przed parametrem searchFields , dlatego w tym przykładzie nie musimy uwzględniać genre parametru searchFields .

Wyszukiwanie rozmyte

Wyszukiwanie rozmyte znajduje dopasowania w kategoriach, które mają podobną konstrukcję, rozszerzając termin do maksymalnie 50 terminów spełniających kryteria odległości dwóch lub mniej. Aby uzyskać więcej informacji, zobacz Wyszukiwanie rozmyte.

Aby przeprowadzić wyszukiwanie rozmyte, użyj symbolu tyldy ~ na końcu pojedynczego wyrazu z opcjonalnym parametrem, liczbą z zakresu od 0 do 2 (wartość domyślna), która określa odległość edycji. Na przykład blue~ lub blue~1 zwraca blue, blues i glue.

Wyszukiwanie rozmyte można stosować tylko do terminów, a nie fraz ujętych w cudzysłów, ale można dołączyć tyldę do każdego terminu indywidualnie w wieloczęściowej nazwie lub frazie. Na przykład Unviersty~ of~ Wshington~ będzie pasował do University of Washington.

Wyszukiwanie w pobliżu

Wyszukiwania w pobliżu służą do znajdowania terminów znajdujących się blisko siebie w dokumencie. Wstaw symbol tyldy ~ na końcu frazy, po której następuje liczba wyrazów tworzących granicę zbliżeniową. Na przykład "hotel airport"~5 znajduje terminy hotel i airport w ciągu pięciu wyrazów w dokumencie.

Zwiększanie terminów

Wyszukiwanie można traktować jako dwa kroki. Najpierw Wyszukiwanie AI platformy Azure znajduje pasujące dokumenty. Następnie klasyfikuje te mecze. Zwiększenie wagi termu wpływa tylko na drugi krok: może przesuwać wyżej w wynikach dokumenty, które pasują do jednej części zapytania.

Zwiększenie terminu różni się od profilu oceniania. Zwiększenie sprzyja słowu, frazie lub grupie w bieżącym zapytaniu. Profil oceniania faworyzuje pola lub inną zawartość indeksu zgodnie z regułami zdefiniowanymi w indeksie.

Zwiększanie zakresu

Wpisz znak ^ i dodatnią liczbę zaraz po tej części zapytania, której chcesz nadać priorytet. Na przykład tax^2 może przesuwać dokumenty zawierające tax wyżej niż dokumenty pasujące jedynie do terminu bez zwiększonej wagi. Domyślna wartość zwiększenia to 1. Można również użyć wartości z przedziału od 0 do 1, na przykład 0.2, aby nadać dopasowaniu mniejszą wagę.

Interpunkcja informuje, które słowa mają wpływ na każdą instrukcję:

  • Nazwa pola i dwukropek, nazywany prefiksem pola, pojawia się przed wyrazem, frazą cytowaną lub grupą nawiasów. Na przykład content: informuje usługę Wyszukiwanie AI platformy Azure, aby wyszukiwała w polu content.
  • Impuls, taki jak ^2, pojawia się po słowie, frazie cytowanej lub grupie nawiasów. Określa usłudze Wyszukiwanie AI platformy Azure, co ma preferować przy ustalaniu rankingu dopasowań.

W poniższej tabeli użyto wartości domyślnej searchMode=any, gdzie spacja między wyrazami działa jak OR.

Query Co może pasować Czemu sprzyja wzmocnienie
deferred tax^2 deferred, lub taxoba. Tylko słowo tax.
"deferred tax"^2 Kompletna fraza zawierająca wyrazy obok siebie i w tej kolejności. Kompletna fraza.
(deferred OR tax)^2 deferred, lub taxoba. Wszystko wewnątrz nawiasów jako jedna grupa.

W przypadku elementu searchMode=all zapytanie deferred tax^2 wymaga dopasowania obu słów. Zwiększenie nadal ma zastosowanie tylko do tax. Aby dopasować jedno z tych słów, wpisz deferred OR tax^2.

Umieść kursor po zamykającym cudzysłowie lub nawiasie, gdy chcesz wzmocnić całą frazę lub grupę. Nawiasy nie tworzą frazy. Użyj cudzysłowów, gdy wyrazy muszą znajdować się obok siebie i w określonej kolejności.

Zwiększanie i zakres pola

Nazwa pola, po której następuje dwukropek, ogranicza miejsce, w którym usługa Wyszukiwanie AI platformy Azure szuka. Wzmocnienie zmienia sposób, w jaki usługa Wyszukiwanie AI platformy Azure klasyfikuje dopasowanie. Oba te elementy można użyć w tym samym zapytaniu.

Query Co to znaczy
content:deferred tax^2 Prefiks pola ma zastosowanie tylko do deferred. Oddzielna część tax^2 używa pól wybranych przez searchFields lub wszystkich przeszukiwalnych pól, jeśli nie określono searchFields. Mecz dostaje dodatkową tax wagę rankingową.
content:"deferred tax"^2 Szukaj pełnej frazy tylko w elemencie content i nadaj jej dodatkową wagę rankingową.
content:(deferred OR tax)^2 Wyszukaj którekolwiek z tych słów tylko w elemencie content i nadaj dopasowaniu grupowanemu wyższą wagę w rankingu.

Na przykład, jeśli searchFields ustawiono na title, pierwsze zapytanie szuka deferred w content oraz tax w title. Cudzysłowy i nawiasy w innych zapytaniach pozostawiają oba wyrazy w obrębie content.

Important

Dwukropek i daszek działają w przeciwnych kierunkach. Prefiks content: pola ma zastosowanie do części zapytania po niej. Wzmocnienie ^2 dotyczy części zapytania znajdującej się przed nim. Użyj cudzysłowów lub nawiasów, aby ta część zawierała więcej niż jeden wyraz. Aby uzyskać więcej informacji, zobacz Wyszukiwanie w polach i Pierwszeństwo (grupowanie).

Wpływ analizatora na zwiększone zapytania

W przypadku zwykłych słów, fraz i grup słów zwiększanie trafności nie powoduje pominięcia analizy tekstu. Przed dopasowaniem Wyszukiwanie AI platformy Azure nadal przetwarza tekst zapytania za pomocą analizatora każdego pola. W związku z tym ten sam wzmocniony tekst może być inaczej dopasowywany w polach, w których stosowane są różne analizatory.

Fraza lub grupa z prefiksem pola używa analizatora tego pola. Tekst bez prefiksu pola używa analizatora dla każdego przeszukiwanego pola. Na przykład analizator, który zmienia tekst na małe litery, może dopasować "DEFERRED TAX"^2 do terminów zapisanych w indeksie małymi literami.

Inne formularze zapytań, takie jak symbol wieloznaczny, wyrażenie regularne i zapytania rozmyte, używają różnych reguł analizy. Dodanie wzmocnienia nie zmienia tych zasad. Aby uzyskać więcej informacji, zobacz Etap 2: Analiza leksykalna.

Wyszukiwanie wyrażeń regularnych

Wyszukiwanie wyrażeń regularnych znajduje dopasowania na podstawie wzorców dopuszczalnych przez Apache Lucene, zdefiniowanych w klasie RegExp.

W usłudze Wyszukiwanie AI platformy Azure wyrażenie regularne to:

  • Ujęta między ukośnikami do przodu /
  • Tylko małe litery

Aby na przykład znaleźć dokumenty zawierające motel lub hotel, określ wartość /[mh]otel/. Wyszukiwania wyrażeń regularnych są dopasowywane do pojedynczych wyrazów.

Niektóre narzędzia i języki nakładają dodatkowe wymagania dotyczące znaków ucieczki poza reguły ucieczki nałożone przez usługę Wyszukiwanie AI platformy Azure. W przypadku formatu JSON, ciągi zawierające ukośnik do przodu są oznaczane ukośnikiem wstecznym: microsoft.com/azure/ staje się search=/.*microsoft.com\/azure\/.*/, gdzie search=/.* <string-placeholder>.*/ ustawia wyrażenie regularne, a microsoft.com\/azure\/ jest ciągiem ze znakowanym ukośnikiem.

Dwa typowe symbole w zapytaniach wyrażeń regularnych to . i *. Symbol . odpowiada dowolnemu znakowi, a * odpowiada poprzedniemu znakowi zero lub więcej razy. Na przykład /be./ pasuje do terminów bee, a bet, podczas gdy /be*/ pasuje do be, bee, beee, ale nie bet. Razem można dopasować dowolną serię znaków, .* tak aby /be.*/ pasował do dowolnego terminu rozpoczynającego się od be takiego jak better.

Jeśli wystąpią błędy składni w wyrażeniu regularnym, zapoznaj się z regułami ucieczkowania dla znaków specjalnych. Możesz również spróbować użyć innego klienta, aby potwierdzić, czy problem jest specyficzny dla narzędzia.

Wyszukiwanie symboli wieloznacznych

Można użyć ogólnie uznawanej składni dla wyszukiwań z użyciem wielu (*) lub pojedynczego (?) symbolu wieloznacznego. Pełna składnia Lucene obsługuje dopasowywanie prefiksów i infiksów. Użyj składni regularnego wyrażenia do dopasowywania sufiksów.

Zwróć uwagę, że analizator zapytań Lucene obsługuje używanie tych symboli z jednym terminem, a nie frazą.

Typ afiksu Opis i przykłady
prefix Fragment terminu występuje przed * lub ?. Na przykład wyrażenie search=alpha* zapytania zwraca alphanumeric lub alphabetical. Dopasowywanie prefiksów jest obsługiwane zarówno w prostej, jak i pełnej składni.
suffix Fragment terminu występuje po * lub ?, z ukośnikiem do przodu, aby rozdzielić konstrukcję. Na przykład search=/.*numeric/ zwraca wartość alphanumeric.
infix Fragmenty terminów obejmują * lub ?. Na przykład search=non*al zwraca wartości non-numerical i nonsensical.

Operatory można łączyć w jednym wyrażeniu. Na przykład 980?2* pasuje do 98072-1222 oraz 98052-1234, gdzie ? pasuje do pojedynczego (wymaganego) znaku, a * pasuje do znaków o dowolnej długości, które następują.

Dopasowanie sufiksów wymaga, aby wyrażenia regularne były ograniczone przez ukośniki /. Ogólnie rzecz biorąc, nie można użyć symbolu * lub ? jako pierwszego znaku terminu bez znaku /. Należy również pamiętać, że element * zachowuje się inaczej, gdy jest używany poza wyrażeniami regularnymi. Poza znakiem ukośnika regex / znak * jest symbolem wieloznacznym i pasuje do dowolnej serii znaków, podobnie jak .* w wyrażeniach regularnych. Na przykład search=/non.*al/ tworzy ten sam zestaw wyników co search=non*al.

Note

Z reguły dopasowywanie wzorców działa wolno, więc warto eksplorować alternatywne metody, takie jak tokenyzacja krawędzi n-gram, która tworzy tokeny dla sekwencji znaków w danym okresie. W przypadku tokenizacji przy użyciu n-gram, indeks będzie większy, ale zapytania mogą być wykonywane szybciej, w zależności od konstrukcji wzorca i długości ciągów, które indeksujesz. Aby uzyskać więcej informacji, zobacz temat Częściowe wyszukiwanie terminów i wzorce ze znakami specjalnymi.

Wpływ analizatora na zapytania wieloznaczne

Podczas analizowania zapytań zapytania, które są formułowane jako prefiks, sufiks, symbol wieloznaczny lub wyrażenia regularne są przekazywane jako do drzewa zapytań, pomijając analizę leksykową. Dopasowania zostaną znalezione tylko wtedy, gdy indeks zawiera ciągi w formacie określonym przez zapytanie. W większości przypadków potrzebny jest analizator podczas indeksowania, który zachowuje integralność ciągów, aby częściowe dopasowanie terminu i wzorca powiodło się. Aby uzyskać więcej informacji, zobacz Wyszukiwanie częściowych terminów w zapytaniach usługi Wyszukiwanie AI platformy Azure.

Rozważ sytuację, w której zapytanie terminal* wyszukiwania może zwracać wyniki zawierające terminy, takie jak terminate, terminationi terminates.

Gdyby użyć analizatora en.lucene (angielski Lucene), stosowałby on agresywne skracanie każdego terminu. Na przykład terminate, termination, terminates wszystkie zostaną sprowadzone do tokenu termi w indeksie. Po drugiej stronie terminy w zapytaniach używające symboli wieloznacznych lub wyszukiwania rozmytego nie są w ogóle analizowane, więc nie będzie żadnych wyników pasujących do terminat* zapytania.

Z drugiej strony analizatory Microsoftu (w tym przypadku analizator en.microsoft) są nieco bardziej zaawansowane i używają lemmatyzacji zamiast stemowania. Oznacza to, że wszystkie wygenerowane tokeny powinny być prawidłowymi wyrazami w języku angielskim. Na przykład, terminate, terminates, i termination będą pozostawać całkowicie obecne w indeksie i byłyby lepszym wyborem dla scenariuszy, które w dużej mierze zależą od dzikich kart i wyszukiwania rozmytego.

Note

Składniki zapytania z symbolami wieloznacznymi, prefiksowe i regexowe są dopasowywane do dosłownych tokenów w indeksie. Ponieważ większość analizatorów zamienia indeksowaną zawartość na małe litery, termin pisany wielkimi literami, taki jak Contoso*, może nie pasować do tokenu takiego jak contoso. Zamień te terminy zapytania na małe litery w swojej aplikacji, w oparciu o sposób normalizacji wielkości liter analizatora przypisanego do tego pola.

Ocenianie symboli wieloznacznych i zapytań wyrażeń regularnych

Usługa Wyszukiwanie AI platformy Azure używa oceniania opartego na częstotliwości (BM25) dla zapytań tekstowych. Jednak w przypadku zapytań wieloznacznych i regularnych, w których zakres terminów może być potencjalnie szeroki, współczynnik częstotliwości jest ignorowany, aby zapobiec stronniczości klasyfikacji w stosunku do dopasowań z rzadkich terminów. Wszystkie dopasowania są traktowane jednakowo w przypadku wyszukiwań za pomocą znaków wieloznacznych i wyrażeń regularnych.

Znaki specjalne

W niektórych okolicznościach możesz wyszukać znak specjalny, taki jak emoji "❤" lub znak "€". W takich przypadkach upewnij się, że używany analizator nie filtruje tych znaków. Analizator standardowy pomija wiele znaków specjalnych, z wyłączeniem ich z indeksu.

Analizatory tokenizowania znaków specjalnych obejmują analizator białych znaków, który uwzględnia wszelkie sekwencje znaków oddzielone odstępami jako tokeny (więc ciąg będzie traktowany jako token). Ponadto analizator języka, taki jak Microsoft English analyzer ("en.microsoft"), będzie przyjmować ciąg "€" jako token. Możesz przetestować analizator, aby zobaczyć, jakie tokeny generuje dla danego zapytania.

W przypadku używania znaków Unicode upewnij się, że symbole są prawidłowo escapowane w adresie URL zapytania (na przykład dla używaj sekwencji unikowej %E2%9D%A4+). Niektórzy klienci REST wykonują to tłumaczenie automatycznie.

Pierwszeństwo (grupowanie)

Użyj nawiasów, aby kontrolować, które części zapytania są oceniane razem. Na przykład motel AND (wifi OR luxury) wymaga motel i co najmniej jednego z terminów wewnątrz nawiasów: wifi lub luxury.

Umieść prefiks pola przed grupą nawiasów, aby przeszukać całą grupę w jednym polu. Na przykład hotelAmenities:(wifi OR pool) szuka tylko w polu wifi elementów pool lub hotelAmenities.

Nawiasy określają, jak AND i OR działają razem. Nie wymagają one wyświetlania wyrazów obok siebie ani w określonej kolejności. Użyj cudzysłowów dla tego zachowania. Aby wzmocnić grupę, umieść kursor za nawiasem zamykającym, jak w hotelAmenities:(wifi OR pool)^2. Aby uzyskać więcej informacji, zobacz Zwiększanie zakresu.

Limity rozmiaru zapytania

Usługa Wyszukiwanie AI platformy Azure nakłada limity rozmiaru i kompozycji zapytań, ponieważ niezwiązane zapytania mogą zdestabilizować usługę wyszukiwania. Istnieją ograniczenia dotyczące rozmiaru i kompozycji zapytania (liczba klauzul). Istnieją również limity długości wyszukiwania prefiksów oraz złożoności wyszukiwania wyrażeń regularnych i wyszukiwania symboli wieloznacznych. Jeśli aplikacja generuje zapytania wyszukiwania programowo, zalecamy zaprojektowanie go w taki sposób, aby nie generował zapytań o niezwiązany rozmiar.

Aby uzyskać więcej informacji na temat limitów zapytań, zobacz Limity żądań interfejsu API.

Zobacz także