Query's maken in Azure Cognitive Search
Als u voor het eerst een query bouwt, worden in dit artikel benaderingen en methoden voor het instellen van query's beschreven. Het introduceert ook een queryaanvraag en legt uit hoe veldkenmerken en taalkundige analyse van invloed kunnen zijn op queryresultaten.
Wat is een queryaanvraag?
Een query is een alleen-lezenaanvraag voor de docs-verzameling van één zoekindex. Hiermee geeft u een zoekparameter op, die de queryexpressie bevat die bestaat uit termen, ingesloten woordgroepen en operators.
Aanvullende parameters voor de aanvraag bieden meer definities voor de query en het antwoord. 'searchFields' kan bijvoorbeeld query's uitvoeren op specifieke velden, 'select' geeft aan welke velden worden geretourneerd in de resultaten en 'count' retourneert het aantal overeenkomsten dat in de index is gevonden.
In het volgende voorbeeld ziet u een algemeen beeld van een queryaanvraag door enkele van de beschikbare parameters weer te geven. Zie Querytypen en -samenstellingen en Documenten zoeken (REST) voor meer informatie over het samenstellen van query's.
POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2020-06-30
{
"search": "NY +view",
"queryType": "simple",
"searchMode": "all",
"searchFields": "HotelName, Description, Address/City, Address/StateProvince, Tags",
"select": "HotelName, Description, Address/City, Address/StateProvince, Tags",
"count": "true"
}
Een client kiezen
U hebt een hulpprogramma nodig, zoals Azure Portal of Postman, of code waarmee een queryclient wordt gemaakt met behulp van API's. We raden u aan Azure Portal of REST API's te maken voor vroege ontwikkeling en testen van een proof-of-concept.
Machtigingen
Voor een queryaanvraag zijn leesmachtigingen vereist, verleend via een API-sleutel die in de header wordt doorgegeven. Elke bewerking, inclusief queryaanvragen, werkt onder een beheer-API-sleutel,maar queryaanvragen kunnen eventueel gebruikmaken van een api-sleutel voor query's. Query-API-sleutels worden sterk aanbevolen. U kunt maximaal 50 per service maken en verschillende sleutels toewijzen aan verschillende toepassingen.
In Azure Portal is voor toegang tot hulpprogramma's, wizards en objecten lidmaatschap van de rol Inzender of hoger van de service vereist.
Een Azure Portal een query uitvoeren op een index
Search Explorer (portal) is een queryinterface in de Azure Portal die query's uitvoert op indexen op de onderliggende zoekservice. Intern maakt de portal aanvragen voor documenten zoeken, maar kan automatisch aanvullen, suggesties of documentzoekactie niet aanroepen.
U kunt elke index en REST API selecteren, inclusief preview. Een queryreeks kan eenvoudige of volledige syntaxis gebruiken, met ondersteuning voor alle queryparameters (filter, select, searchFields, etc.). Wanneer u in de portal een index opent, kunt u samen met Search Explorer werken met de JSON-definitie van de index op tabbladen naast elkaar voor eenvoudige toegang tot veldkenmerken. Controleer tijdens het testen van query's welke velden doorzoekbaar, sorteerbaar, filterbaar en facetbaar zijn.
Een REST-client gebruiken
Zowel Postman als Visual Studio Code (met een extensie voor Azure Cognitive Search) kunnen als queryclient functioneren. Met beide hulpprogramma's kunt u verbinding maken met uw zoekservice en REST-aanvragen (Search Documents) verzenden. Talloze zelfstudies en voorbeelden demonstreren REST-clients voor het uitvoeren van query's op indexering.
Begin met een van deze artikelen voor meer informatie over elke client (beide bevatten instructies voor query's):
- Een zoekindex maken met REST en Postman
- Aan de slag met Visual Studio Code en Azure Cognitive Search
Elke aanvraag is zelfstandig, dus u moet bij elke aanvraag het eindpunt, de indexnaam en de API-versie verstrekken. Andere eigenschappen, Inhoudstype en API-sleutel, worden doorgegeven aan de aanvraagheader. Zie Documenten zoeken (REST) voor hulp bij het formuleren van queryaanvragen voor meer informatie.
Een SDK gebruiken
Voor Cognitive Search implementeren de Azure SDK's algemeen beschikbare functies. Als zodanig kunt u een van de SDK's gebruiken om een query uit te voeren op een index. Ze bieden allemaal een SearchClient met methoden voor interactie met een index, van het laden van een index met zoekdocumenten tot het formuleren van queryaanvragen.
| Azure SDK | Client | Voorbeelden |
|---|---|---|
| .NET | SearchClient | DotNetHowTo |
| Java | SearchClient | SearchForDynamicDocumentsExample.java |
| Javascript | SearchClient | Hangende. |
| Python | SearchClient | sample_simple_query.py |
Een querytype kiezen: eenvoudige | Volledige
Als uw query zoekopdracht in volledige tekst is, wordt een queryparser gebruikt voor het verwerken van tekst die wordt doorgegeven als zoektermen en woordgroepen. Azure Cognitive Search biedt twee queryparsers.
De eenvoudige parser begrijpt de eenvoudige querysyntaxis. Deze parser is geselecteerd als de standaardwaarde voor de snelheid en effectiviteit in vrije tekstquery's. De syntaxis ondersteunt algemene zoekoperators (AND, OR, NOT) voor zoektermen en woordgroepen, en voorvoegsel ( ) zoeken
*(zoals in 'sea*' voor Seattle en Seattle). Een algemene aanbeveling is om eerst de eenvoudige parser uit te proberen en vervolgens door te gaan naar de volledige parser als toepassingsvereisten voor krachtigere query's vragen.De volledige Lucene-querysyntaxisdie is ingeschakeld wanneer u aan de aanvraag toevoegt, is gebaseerd op
queryType=fullde Apache Lucene Parser.
Volledige syntaxis en eenvoudige syntaxis overlappen zo veel dat beide hetzelfde voorvoegsel en booleaanse bewerkingen ondersteunen, maar de volledige syntaxis biedt meer operators. Volledig zijn er meer operators voor Booleaanse expressies en meer operators voor geavanceerde query's, zoals fuzzy zoekopdrachten, zoekopdrachten met jokertekens, zoeken op nabijheid en reguliere expressies.
Querymethoden kiezen
Zoeken is in principe een gebruikersgestuurde oefening, waarbij termen of woordgroepen worden verzameld uit een zoekvak of door op gebeurtenissen op een pagina te klikken. De volgende tabel bevat een overzicht van de mechanismen waarmee u gebruikersinvoer kunt verzamelen, samen met de verwachte zoekervaring.
| Invoer | Ervaring |
|---|---|
| Zoekmethode | Een gebruiker typen termen of zinnen in een zoekvak, met of zonder operators, en klikt op Zoeken om de aanvraag te verzenden. Zoeken kan worden gebruikt met filters voor dezelfde aanvraag, maar niet met automatisch aanvullen of suggesties. |
| Methode voor automatisch aanvullen | Een gebruiker typt enkele tekens en query's worden gestart nadat elk nieuw teken is getypt. Het antwoord is een voltooide tekenreeks van de index. Als de opgegeven tekenreeks geldig is, klikt de gebruiker op Zoeken om die query naar de service te verzenden. |
| Methode voor suggesties | Net als bij automatisch aanvullen, typen gebruikers enkele tekens en worden incrementele query's gegenereerd. Het antwoord is een vervolgkeuzelijst met overeenkomende documenten, die doorgaans worden vertegenwoordigd door enkele unieke of beschrijvende velden. Als een van de selecties geldig is, klikt de gebruiker op een van de selecties en wordt het overeenkomende document geretourneerd. |
| Facetnavigatie | Op een pagina worden klikbare navigatiekoppelingen of breadcrumbs weergegeven die het bereik van de zoekopdracht beperken. Een facetnavigatiestructuur wordt dynamisch samengesteld op basis van een eerste query. Als u bijvoorbeeld search=* een facetnavigatiestructuur wilt vullen die uit elke mogelijke categorie bestaat. Een facetnavigatiestructuur wordt gemaakt op basis van een queryreactie, maar het is ook een mechanisme voor het uitdrukken van de volgende query. n REST API verwijzing wordt gedocumenteerd als een queryparameter van een bewerking Documenten zoeken, maar facets deze kan worden gebruikt zonder de parameter search . |
| 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 wordt gedocumenteerd als een queryparameter van een bewerking Documenten zoeken, maar deze kan worden gebruikt $filter zonder de search parameter . |
Uw veldkenmerken kennen
Als u eerder querytypen ensamenstelling hebt bekeken, kunt u zich herinneren dat de parameters voor de queryaanvraag afhankelijk zijn van de manier waarop velden in een index worden toegewezen. Als u bijvoorbeeld wilt gebruiken in een query-, filter- of sorteer volgorde, moet een veld doorzoekbaar, filterbaar en sorteerbaar zijn. Op dezelfde manier kunnen alleen velden die zijn gemarkeerd als ophaalbaar worden weergegeven in de resultaten. Wanneer u begint met het opgeven van de parameters , en in uw aanvraag, moet u de kenmerken controleren terwijl u onverwachte search filter resultaten orderby vermijdt.
In de schermafbeelding van de portal hieronder van de voorbeeldindex voor hotelskunnen alleen de laatste twee velden 'LastRenovationDate' en 'Rating' worden gebruikt in een "$orderby" alleen-component.

Zie Index maken (REST API) voor een beschrijving van veldkenmerken.
Uw tokens kennen
Tijdens het indexeren gebruikt de zoekmachine een analysefunctie om tekstanalyse uit te voeren op tekenreeksen, waardoor de kans op overeenkomende gegevens tijdens het uitvoeren van query's wordt gemaximalisatied. Tekenreeksen hebben minimaal kleine woorden, maar kunnen ook worden verwijderd uit de uitverwijdering en het stoppen van woorden. Grotere tekenreeksen of samengestelde woorden worden doorgaans opgesplitst op basis van witruimte, afbreekstreepels of streepjes en geïndexeerd als afzonderlijke tokens.
Het punt dat u hier weg moet nemen, is dat wat u denkt dat uw index bevat en wat er daadwerkelijk in staat, anders kan zijn. Als query's geen verwachte resultaten retourneren, kunt u de tokens inspecteren die door de analyzer zijn gemaakt via de analysetekst (REST API). Zie Gedeeltelijke term zoeken en patronen met speciale tekens voor meer informatie over tokenisatie en de impact op query's.
Volgende stappen
Nu u een beter inzicht hebt in de manier waarop queryaanvragen werken, kunt u de volgende quickstarts proberen voor een praktijkervaring.