Spellingcontrole toevoegen aan query's in Azure AI Search
Belangrijk
Spellingcorrectie is in openbare preview onder aanvullende gebruiksvoorwaarden. Deze is beschikbaar via Azure Portal, preview-REST API's en bètaversies van Azure SDK-bibliotheken.
U kunt het intrekken verbeteren door woorden in een query te corrigeren voordat ze de zoekmachine bereiken. De speller
parameter wordt ondersteund voor alle typen tekstquery's (niet-vector).
Vereisten
Een zoekservice in de Basic-laag of hoger, in elke regio.
Een bestaande zoekindex met inhoud in een ondersteunde taal.
Een queryaanvraag die een ondersteunde taal heeft
speller=lexicon
enqueryLanguage
instelt. Spellingcontrole werkt op tekenreeksen die zijn doorgegeven in desearch
parameter. Het wordt niet ondersteund voor filters, fuzzy zoeken, zoeken met jokertekens, reguliere expressies of vectorquery's.
Gebruik een zoekclient die preview-API's ondersteunt voor de queryaanvraag. U kunt een REST-client of bètaversie van de Azure SDK's gebruiken.
Clientbibliotheek | Versies |
---|---|
REST-API | Versies 2020-06-30-Preview en hoger. We raden de nieuwste preview-API aan. 2024-05-01-preview |
Azure-SDK voor .NET | versie 11.5.0-beta.5 |
Azure SDK voor Java | versie 11.6.0-beta.5 |
Azure-SDK voor JavaScript | versie 11.3.0-beta.8 |
Azure-SDK voor Python | versie 11.4.0b3 |
Spellingcorrectie met eenvoudige zoekopdrachten
In het volgende voorbeeld wordt de ingebouwde index hotels-sample gebruikt om de spellingcorrectie voor een eenvoudige tekstquery te demonstreren. Zonder spellingcorrectie retourneert de query nul resultaten. Met correctie retourneert de query één resultaat voor johnson's familiegeoriënteerde resort.
POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2024-05-01-preview
{
"search": "famly acitvites",
"speller": "lexicon",
"queryLanguage": "en-us",
"queryType": "simple",
"select": "HotelId,HotelName,Description,Category,Tags",
"count": true
}
Spellingcorrectie met volledige Lucene
Spellingcorrectie vindt plaats op afzonderlijke querytermen die tekstanalyse ondergaan. Daarom kunt u de parameter spellingcontrole gebruiken met sommige Lucene-query's, maar niet met andere.
- Incompatibele queryformulieren die tekstanalyse omzeilen zijn: jokerteken, regex, fuzzy
- Compatibele queryformulieren zijn: zoeken in velden, nabijheid, termenverhoging
In dit voorbeeld wordt een veldzoekopdracht gebruikt voor het veld Categorie, met volledige Lucene-syntaxis en een verkeerd gespelde queryterm. Door de spelling op te neemt, wordt de typfout in 'Suiite' gecorrigeerd en slaagt de query.
POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2024-05-01-preview
{
"search": "Category:(Resort and Spa) OR Category:Suiite",
"queryType": "full",
"speller": "lexicon",
"queryLanguage": "en-us",
"select": "Category",
"count": true
}
Spellingcorrectie met semantische rangschikking
Deze query, met typfouten in elke term behalve één, ondergaat spellingcorrecties om relevante resultaten te retourneren. Zie Semantische rangschikking configureren voor meer informatie.
POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2024-05-01-preview
{
"search": "hisotoric hotell wiht great restrant nad wiifi",
"queryType": "semantic",
"speller": "lexicon",
"queryLanguage": "en-us",
"searchFields": "HotelName,Tags,Description",
"select": "HotelId,HotelName,Description,Category,Tags",
"count": true
}
Ondersteunde talen
Geldige waarden voor queryLanguage
vindt u in de volgende tabel, gekopieerd uit de lijst met ondersteunde talen (REST API-verwijzing).
Taal | queryLanguage |
---|---|
Engels [EN] | EN, EN-US (standaard) |
Spaans [ES] | ES, ES-ES (standaard) |
Frans [FR] | FR, FR-FR (standaard) |
Duits [DE] | DE, DE-DE (standaard) |
Nederlands [NL] | NL, NL-BE, NL-NL (standaard) |
Notitie
Voorheen werd de parameter ook gebruikt voor semantische rangschikking queryLanguage
. Semantische ranker is nu taalneutraal.
Overwegingen voor taalanalyse
Indexen die niet-Engelse inhoud bevatten, gebruiken vaak taalanalyses op niet-Engelse velden om de taalkundige regels van de systeemeigen taal toe te passen.
Wanneer u spellingcontrole toevoegt aan inhoud die ook taalanalyse ondergaat, kunt u betere resultaten bereiken met dezelfde taal voor elke indexerings- en queryverwerkingsstap. Als de inhoud van een veld bijvoorbeeld is geïndexeerd met behulp van de taalanalyse 'fr.microsoft', moeten query's en spellingcontrole allemaal een Franse lexicon of taalbibliotheek van een bepaalde vorm gebruiken.
Om samen te vatten hoe taalbibliotheken worden gebruikt in Azure AI Search:
Taalanalyses kunnen worden aangeroepen tijdens het indexeren en uitvoeren van query's en zijn Apache Lucene (bijvoorbeeld 'de.lucene') of Microsoft ('de.microsoft').
Taal lexicons die tijdens de spellingcontrole worden aangeroepen, worden opgegeven met behulp van een van de taalcodes in de ondersteunde taaltabel .
In een queryaanvraag geldt de waarde die is toegewezen aan queryLanguage
speller
.
Notitie
Taalconsistentie tussen verschillende eigenschapswaarden is slechts een probleem als u taalanalyses gebruikt. Als u taalagnostische analyses gebruikt (zoals trefwoord, eenvoudig, standaard, stop, witruimte of standardasciifolding.lucene
), kan de queryLanguage
waarde zijn wat u wilt.
Hoewel inhoud in een zoekindex in meerdere talen kan worden samengesteld, is de queryinvoer waarschijnlijk in één. De zoekmachine controleert niet op compatibiliteit van queryLanguage
taalanalyse en de taal waarin inhoud is samengesteld, dus zorg ervoor dat u query's dienovereenkomstig bereikt om te voorkomen dat er onjuiste resultaten worden geproduceerd.