Dotazování ve službě Azure AI Search
Azure AI Search podporuje konstrukty dotazů pro širokou škálu scénářů, od bezplatného textového vyhledávání až po vzory dotazů s vysokou určitou hodnotou až po vektorové vyhledávání. Všechny dotazy se spouštějí přes index vyhledávání, který ukládá prohledávatelný obsah.
Typy dotazů
Formulář dotazu | Prohledávatelný obsah | Popis |
---|---|---|
Fulltextové vyhledávání | Invertované indexy tokenizovaných termínů | Fulltextové dotazy iterují invertované indexy, které jsou strukturované pro rychlé kontroly, kde lze najít shodu v potenciálně libovolném poli v libovolném počtu vyhledávacích dokumentů. Text se analyzuje a tokenizuje pro fulltextové vyhledávání. |
Vektorové vyhledávání | Vektorové indexy vygenerovaných vkládání | Vektorové dotazy iterují vektorová pole v indexu vyhledávání. |
Hybridní vyhledávání | Všechny výše uvedené položky v jediném indexu vyhledávání. | Kombinuje vyhledávání textu a vektorové vyhledávání v jednom požadavku dotazu. Vyhledávání textu funguje na obsahu prostého textu v polích "prohledávatelná" a "filtrovatelná". Vektorové vyhledávání pracuje s obsahem v vektorových polích. |
Ostatní | Prostý text a obsah čitelný pro člověka | Nezpracovaný obsah, extrahovaný doslovný text ze zdrojových dokumentů, podpora filtrů a porovnávání vzorů dotazů, jako je geoprostorové vyhledávání, přibližné vyhledávání a hledání v polích. |
Tento článek se zaměřuje na poslední kategorii: dotazy, které pracují s prostým textem a obsahem čitelným pro člověka, extrahovaný beze změny z původního zdroje, používané pro filtry a další specializované formuláře dotazů.
Automatické dokončování a navrhované dotazy
Automatické dokončování nebo navrhované výsledky jsou alternativy search
, které aktivují po sobě jdoucí požadavky dotazů na základě částečných řetězcových vstupů (za každým znakem) v prostředí pro hledání při psaní. Můžete použít společně nebo suggestions
samostatně parametrautocomplete
, jak je popsáno v tomto návodu, ale nemůžete je použít s search
. Dokončené termíny i navrhované dotazy se odvozují z obsahu indexu. Modul nikdy nevrátí řetězec nebo návrh, který v indexu neexistuje. Další informace najdete v tématu Automatické dokončování (REST API) a návrhy (REST API).
Filtrování hledání
Filtry se běžně používají v aplikacích založených na službě Azure AI Search. Na stránkách aplikace se filtry často vizualizují jako omezující vlastnosti v navigačních strukturách odkazů pro filtrování směrované uživatelem. Filtry se také používají interně k zveřejnění řezů indexovaného obsahu. Vyhledávací stránku můžete například inicializovat pomocí filtru kategorie produktu nebo jazyka, pokud index obsahuje pole v angličtině i francouzštině.
Můžete také potřebovat filtry k vyvolání specializovaného formuláře dotazu, jak je popsáno v následující tabulce. Filtr můžete použít s nespecifikovaným vyhledáváním (search=*
) nebo řetězcem dotazu, který obsahuje termíny, fráze, operátory a vzory.
Scénář filtrování | Popis |
---|---|
Filtry rozsahů | Ve službě Azure AI Search se dotazy na rozsah vytvářejí pomocí parametru filtru. Další informace a příklady najdete v příkladu filtru rozsahu. |
Fasetová navigace | Ve fasetové navigační struktuře můžou uživatelé vybrat omezující vlastnosti. Při zálohování filtry se výsledky hledání zúží na každém kliknutí. Každá omezující vlastnost je zajištěna filtrem, který vylučuje dokumenty, které už neodpovídají kritériím poskytnutým omezující vlastností. |
Poznámka:
Text použitý ve výrazu filtru se během zpracování dotazu neanalyzuje. U textového vstupu se předpokládá, že se jedná o doslovný vzor znaků s rozlišováním velkých a malých písmen, který buď proběhne úspěšně, nebo selže ve shodě. Výrazy filtru se vytvářejí pomocí syntaxe OData a předávají se v parametru filter
ve všech filtrovatelných polích v indexu. Další informace najdete v tématu Filtry ve službě Azure AI Search.
Geoprostorové vyhledávání
Geoprostorové vyhledávání odpovídá souřadnicím zeměpisné šířky a délky umístění pro hledání "najít poblíž" nebo mapového vyhledávání. Ve službě Azure AI Search můžete geoprostorové vyhledávání implementovat pomocí následujícího postupu:
- Definujte filtrovatelné pole jednoho z těchto typů: Edm.GeographyPoint, Collection(Edm.GeographyPoint, Edm.GeographyPolygon).
- Ověřte, že příchozí dokumenty obsahují odpovídající souřadnice.
- Po dokončení indexování vytvořte dotaz, který používá filtr a geoprostorovou funkci.
Geoprostorové vyhledávání používá kilometry pro vzdálenost. Souřadnice jsou zadány v tomto formátu: (longitude, latitude
).
Tady je příklad filtru pro geoprostorové vyhledávání. Tento filtr najde další Location
pole v indexu vyhledávání, která mají souřadnice v okruhu 300 kilometrů od zeměpisného bodu (v tomto příkladu Washington D.C.). Vrátí ve výsledku informace o adrese a obsahuje volitelnou facets
klauzuli pro samoobslužnou navigaci na základě umístění.
POST https://{{searchServiceName}}.search.windows.net/indexes/hotels-vector-quickstart/docs/search?api-version=2024-07-01
{
"count": true,
"search": "*",
"filter": "geo.distance(Location, geography'POINT(-77.03241 38.90166)') le 300",
"facets": [ "Address/StateProvince"],
"select": "HotelId, HotelName, Address/StreetAddress, Address/City, Address/StateProvince",
"top": 7
}
Další informace a příklady najdete v příkladu geoprostorové vyhledávání.
Vyhledávání dokumentu
Na rozdíl od dříve popsaných formulářů dotazu tento formulář načte jeden vyhledávací dokument podle ID bez odpovídajícího vyhledávání nebo prohledávání indexu. Vyžaduje se a vrátí pouze jeden dokument. Když uživatel vybere položku ve výsledcích hledání, načtení dokumentu a naplnění stránky podrobností poli je typická odpověď a vyhledávání dokumentu je operace, která ji podporuje.
Rozšířené vyhledávání: přibližný, zástupný znak, blízkost, regulární výraz
Rozšířený formulář dotazu závisí na úplném analyzátoru Lucene a operátorech, které aktivují konkrétní chování dotazu.
Typ dotazu | Využití | Příklady a další informace |
---|---|---|
Hledání podle polí | search parametr queryType=full |
Vytvořte složený výraz dotazu, který cílí na jedno pole. Příklad hledání v poli |
Přibližné hledání | search parametr queryType=full |
Shoduje se s termíny, které mají podobnou konstrukci nebo pravopis. Příklad vyhledávání přibližných shod |
hledání bezkontaktní komunikace | search parametr queryType=full |
Najde termíny, které jsou v dokumentu blízko sebe. Příklad hledání bezkontaktní komunikace |
posílení termínu | search parametr queryType=full |
Dokument seřadí do vyššího pořadí, pokud obsahuje zesílený termín vzhledem k ostatním, kteří ne. Příklad zvýšení termínu |
hledání regulárních výrazů | search parametr queryType=full |
Odpovídá na základě obsahu regulárního výrazu. Příklad regulárního výrazu |
Vyhledávání zástupných znaků nebo předpon | search parametrem *~ nebo ? , queryType=full |
Odpovídá na základě předpony a vlnovek (~ ) nebo jednoho znaku (? ). Příklad hledání pomocí zástupných znaků |
Další kroky
Podrobnější pohled na implementaci dotazů najdete v příkladech pro každou syntaxi. Pokud s fulltextovým vyhledáváním začínáte, podívejte se blíže na to, co dotazovací modul dělá, stejně dobrou volbou.