Een volledige-tekstquery maken in Azure AI Search
Als u een query bouwt voor zoeken in volledige tekst, bevat dit artikel de stappen voor het instellen van de aanvraag. Er wordt ook een querystructuur geïntroduceerd en wordt uitgelegd hoe veldkenmerken en taalkundige analysen van invloed kunnen zijn op queryresultaten.
Vereisten
Een zoekindex met tekenreeksvelden die zijn toegeschreven als doorzoekbaar.
Leesmachtigingen voor de zoekindex. Neem voor leestoegang een query-API-sleutel op voor de aanvraag of geef de aanroeper machtigingen voor de zoekindexgegevenslezer.
Voorbeeld van een queryaanvraag in volledige tekst
In Azure AI Search is een query een alleen-lezenaanvraag voor de docs-verzameling van één zoekindex, met parameters die de uitvoering van query's informeren en het antwoord vormgeven dat terugkomt.
Een volledige tekstquery wordt opgegeven in een search
parameter en bestaat uit termen, tussen aanhalingstekens en operatoren. Andere parameters voegen meer definitie toe aan de aanvraag.
Met de volgende aanroep van de REST API van Search POST wordt een queryaanvraag geïllustreerd met behulp van de vermelde parameters.
POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2024-07-01
{
"search": "NY +view",
"queryType": "simple",
"searchMode": "all",
"searchFields": "HotelName, Description, Address/City, Address/StateProvince, Tags",
"select": "HotelName, Description, Address/City, Address/StateProvince, Tags",
"top": 10,
"count": true
}
Belangrijkste punten
search
biedt de criteria voor overeenkomsten, meestal hele termen of woordgroepen, met of zonder operatoren. Elk veld dat wordt toegeschreven als doorzoekbaar in het indexschema, is een kandidaat voor deze parameter.queryType
stelt de parser in: eenvoudig, vol. De standaard eenvoudige queryparser is optimaal voor zoeken in volledige tekst. De volledige Lucene-queryparser is bedoeld voor geavanceerde queryconstructies zoals reguliere expressies, nabijheid zoeken, fuzzy en jokertekens zoeken. Deze parameter kan ook worden ingesteld op semantisch voor semantische classificatie voor geavanceerde semantische modellering in het queryantwoord.searchMode
geeft aan of overeenkomsten zijn gebaseerd op alle criteria (voorkeursnauwkeurigheid) of criteria (voorkeur intrekken) in de expressie. De standaardwaarde is willekeurige. Als u verwacht dat booleaanse operatoren intensief worden gebruikt, wat waarschijnlijker is in indexen die grote tekstblokken bevatten (een inhoudsveld of lange beschrijvingen), moet u query's testen met desearchMode=Any|All
parameter om de impact van die instelling op booleaanse zoekopdrachten te evalueren.searchFields
beperkt de uitvoering van query's tot specifieke doorzoekbare velden. Tijdens de ontwikkeling is het handig om dezelfde lijst met velden te gebruiken voor selecteren en zoeken. Anders is een overeenkomst mogelijk gebaseerd op veldwaarden die u niet in de resultaten kunt zien, waardoor er onzekerheid ontstaat over de reden waarom het document is geretourneerd.
Parameters die worden gebruikt om het antwoord vorm te geven:
select
geeft aan welke velden moeten worden geretourneerd in het antwoord. Alleen velden die zijn gemarkeerd als ophaalbaar in de index, kunnen worden gebruikt in een select-instructie.top
retourneert het opgegeven aantal best overeenkomende documenten. In dit voorbeeld worden slechts 10 treffers geretourneerd. U kunt de resultaten bovenaan gebruiken en overslaan (niet weergegeven).count
geeft aan hoeveel documenten in de hele index in het algemeen overeenkomen, wat meer kan zijn dan wat wordt geretourneerd.orderby
wordt gebruikt als u resultaten wilt sorteren op een waarde, zoals een classificatie of locatie. Anders wordt de relevantiescore standaard gebruikt om resultaten te rangschikken. Een veld moet worden toegeschreven als sorteerbaar als kandidaat voor deze parameter.
Een client kiezen
Voor vroege ontwikkeling en proof-of-concept testen begint u met Azure Portal of een REST-client. Beide benaderingen zijn interactief, handig voor gerichte tests en helpen u bij het beoordelen van de effecten van verschillende eigenschappen zonder dat u code hoeft te schrijven.
Als u zoeken vanuit een app wilt aanroepen, gebruikt u de Azure.Document.Search
clientbibliotheken in de Azure SDK's voor .NET, Java, JavaScript en Python.
Wanneer u een index opent, kunt u in Azure Portal samen met Search Explorer naast de JSON-indexdefinitie naast de indextabbladen werken voor eenvoudige toegang tot veldkenmerken. Controleer de tabel Velden om te zien welke doorzoekbaar, sorteerbaar, filterbaar en facetable zijn tijdens het testen van query's.
Meld u aan bij Azure Portal en zoek uw zoekservice.
Selecteer Indexen in uw service en kies een index.
Er wordt een index geopend op het tabblad Search Explorer , zodat u direct query's kunt uitvoeren. Schakel over naar de JSON-weergave om de querysyntaxis op te geven.
Hier volgt een zoekquery-expressie voor volledige tekst die werkt voor de voorbeeldindex Hotels:
{ "search": "pool spa +airport", "queryType": "simple", "searchMode": "any", "searchFields": "Description, Tags", "select": "HotelName, Description, Tags", "top": 10, "count": true }
In de volgende schermopname ziet u de query en het antwoord:
Kies een querytype: eenvoudig | vol
Als uw query zoeken in volledige tekst is, wordt een queryparser gebruikt voor het verwerken van tekst die wordt doorgegeven als zoektermen en woordgroepen. Azure AI Search biedt twee queryparsers.
De eenvoudige parser begrijpt de eenvoudige querysyntaxis. Deze parser is geselecteerd als de standaardinstelling voor de snelheid en effectiviteit in vrije tekstquery's. De syntaxis ondersteunt veelgebruikte zoekoperators (EN, OF, NIET) voor zoektermen en woordgroepen, en voorvoegsel () zoeken (
*
zoals insea*
seattle en kust). Een algemene aanbeveling is om eerst de eenvoudige parser uit te proberen en vervolgens door te gaan naar de volledige parser als toepassingsvereisten vragen om krachtigere query's.De volledige Lucene-querysyntaxis, ingeschakeld wanneer u aan de aanvraag toevoegt
queryType=full
, is gebaseerd op de Apache Lucene Parser.
Volledige syntaxis en eenvoudige syntaxis overlappen voor zover beide hetzelfde voorvoegsel en booleaanse bewerkingen ondersteunen, maar de volledige syntaxis biedt meer operators. Volledig zijn er meer operators voor Boole-expressies en meer operators voor geavanceerde query's, zoals fuzzy zoeken, zoeken met jokertekens, nabijheidszoekopdrachten en reguliere expressies.
Querymethoden kiezen
Zoeken is in wezen een gebruikersgestuurde oefening, waarbij termen of woordgroepen worden verzameld uit een zoekvak of van klikgebeurtenissen op een pagina. De volgende tabel bevat een overzicht van de mechanismen waarmee u gebruikersinvoer kunt verzamelen, samen met de verwachte zoekervaring.
Invoer | Ervaring |
---|---|
Zoekmethode | Een gebruiker typt de termen of woordgroepen in een zoekvak, met of zonder operators, en selecteert Zoeken om de aanvraag te verzenden. Zoeken kan worden gebruikt met filters voor dezelfde aanvraag, maar niet met automatisch aanvullen of suggesties. |
Methode Automatisch aanvullen | Een gebruiker typt een paar tekens en query's worden gestart nadat elk nieuw teken is getypt. Het antwoord is een voltooide tekenreeks uit de index. Als de opgegeven tekenreeks geldig is, selecteert de gebruiker Zoeken om die query naar de service te verzenden. |
Methode Suggesties | Net als bij automatisch aanvullen worden een gebruiker een paar tekens en incrementele query's gegenereerd. Het antwoord is een vervolgkeuzelijst met overeenkomende documenten, meestal vertegenwoordigd door enkele unieke of beschrijvende velden. Als een van de selecties geldig is, selecteert de gebruiker er een en wordt het overeenkomende document geretourneerd. |
Facetnavigatie | Een pagina toont klikbare navigatiekoppelingen of breadcrumbs die het bereik van de zoekopdracht beperken. Een facetnavigatiestructuur is dynamisch samengesteld op basis van een eerste query. Als u bijvoorbeeld search=* een facetnavigatiestructuur wilt vullen die bestaat uit elke mogelijke categorie. Er wordt een facetnavigatiestructuur gemaakt op basis van een queryantwoord, maar het is ook een mechanisme voor het uitdrukken van de volgende query. n REST API-verwijzing, facets wordt gedocumenteerd als een queryparameter van een bewerking Documenten zoeken, maar kan worden gebruikt zonder de search parameter. |
Filtermethode | Filters worden gebruikt met facetten om de resultaten te beperken. U kunt ook een filter achter de pagina implementeren, bijvoorbeeld om de pagina te initialiseren met taalspecifieke velden. In REST API-verwijzing $filter wordt beschreven als een queryparameter van een bewerking Documenten zoeken, maar kan deze worden gebruikt zonder de search parameter. |
Effect van veldkenmerken op query's
Als u bekend bent met querytypen en -samenstelling, weet u misschien dat de parameters voor een queryaanvraag afhankelijk zijn van veldkenmerken in een index. Zo kunnen alleen velden die als doorzoekbaar en ophaalbaar zijn gemarkeerd, worden gebruikt in query's en zoekresultaten. Wanneer u de search
parameters filter
en orderby
parameters in uw aanvraag instelt, moet u de kenmerken controleren om onverwachte resultaten te voorkomen.
In de volgende schermopname van de voorbeeldindex hotels zijn alleen de laatste twee velden LastRenovationDate en Rating sorteerbaar, een vereiste voor gebruik in een "$orderby"
enige component.
Zie Index maken (REST API) voor veldkenmerkdefinities.
Effect van tokens op query's
Tijdens het indexeren gebruikt de zoekmachine een tekstanalyse op tekenreeksen om het potentieel voor het vinden van een overeenkomst tijdens de query te maximaliseren. Tekenreeksen zijn minimaal kleine letters, maar afhankelijk van de analyse kunnen ook lemmatisatie ondergaan en het verwijderen van woorden stoppen. Grotere tekenreeksen of samengestelde woorden worden meestal opgesplitst door spaties, afbreekstreepjes of streepjes en geïndexeerd als afzonderlijke tokens.
Het belangrijkste punt is dat wat u denkt dat uw index bevat en wat er daadwerkelijk in zit, anders kan zijn. Als query's geen verwachte resultaten retourneren, kunt u de tokens inspecteren die door de analyse zijn gemaakt via de Analysetekst (REST API). Zie Gedeeltelijke zoektermen en patronen met speciale tekens voor meer informatie over tokenisatie en het effect op query's.
Gerelateerde inhoud
Nu u een beter inzicht hebt in hoe queryaanvragen werken, kunt u de volgende quickstarts uitproberen voor praktische ervaring.