Lägga till stavningskontroll i frågor i Azure AI Search

Viktigt!

Stavningskorrigering är i offentlig förhandsversion under kompletterande användningsvillkor. Den är tillgänglig via Azure-portalen, förhandsversioner av REST API:er och betaversioner av Azure SDK-bibliotek.

Du kan förbättra återkallandet genom att stavningskorrigeringsord i en fråga innan de når sökmotorn. Parametern speller stöds för alla textfrågetyper (icke-vektor).

Förutsättningar

  • En söktjänst på Basic-nivån eller högre, i valfri region.

  • Ett befintligt sökindex med innehåll på ett språk som stöds.

  • En frågebegäran som har speller=lexicon och queryLanguage är inställd på ett språk som stöds. Stavningskontroll fungerar på strängar som skickas i parametern search . Det stöds inte för filter, fuzzy-sökning, jokerteckensökning, reguljära uttryck eller vektorfrågor.

Använd en sökklient som stöder förhandsversions-API:er i frågebegäran. Du kan använda en REST-klient eller kod som du har ändrat för att göra REST-anrop till förhandsversions-API:erna. Du kan också använda betaversioner av Azure SDK:er.

Klientbibliotek Versioner
REST-API Versioner 2020-06-30-Preview och senare. Den aktuella versionen är 2023-10-01-Preview
Azure SDK för .NET version 11.5.0-beta.5
Azure SDK för Java version 11.6.0-beta.5
Azure SDK för Java Script version 11.3.0-beta.8
Azure SDK för Python version 11.4.0b3

I följande exempel används det inbyggda hotels-sample-indexet för att demonstrera stavningskorrigering i en enkel textfråga. Utan stavningskorrigering returnerar frågan noll resultat. Med korrigering returnerar frågan ett resultat för Johnsons familjeorienterade resort.

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2020-06-30-Preview
{
    "search": "famly acitvites",
    "speller": "lexicon",
    "queryLanguage": "en-us",
    "queryType": "simple",
    "select": "HotelId,HotelName,Description,Category,Tags",
    "count": true
}

Stavningskorrigering med fullständig Lucene

Stavningskorrigering sker på enskilda frågetermer som genomgår textanalys, varför du kan använda stavningsparametern med vissa Lucene-frågor, men inte andra.

  • Inkompatibla frågeformulär som kringgår textanalys är: jokertecken, regex, fuzzy
  • Kompatibla frågeformulär är: fältsökning, närhet, termförstärkning

I det här exemplet används fältsökning över fältet Kategori, med fullständig Lucene-syntax och en felstavad frågeterm. Genom att inkludera stavningsfel korrigeras stavfelet i "Suiite" och frågan lyckas.

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2020-06-30-Preview
{
    "search": "Category:(Resort and Spa) OR Category:Suiite",
    "queryType": "full",
    "speller": "lexicon",
    "queryLanguage": "en-us",
    "select": "Category",
    "count": true
}

Stavningskorrigering med semantisk rangordning

Den här frågan, med stavfel i varje term utom en, genomgår stavningskorrigeringar för att returnera relevanta resultat. Mer information finns i Konfigurera semantisk rangordning.

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2020-06-30-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
}

Språk som stöds

Giltiga värden för queryLanguage finns i följande tabell, kopierade från listan över språk som stöds (REST API-referens).

Språk queryLanguage
Engelska [EN] EN, EN-US (standard)
Spanska [ES] ES, ES-ES (standard)
Franska [FR] FR, FR-FR (standard)
Tyska [DE] DE, DE-DE (standard)
Nederländska [NL] NL, NL-BE, NL-NL (standard)

Kommentar

Tidigare, medan semantisk rankning var i offentlig förhandsversion, användes parametern queryLanguage också för semantisk rangordning. Semantisk rankning är nu språkagnostisk.

Överväganden för språkanalys

Index som innehåller icke-engelskt innehåll använder ofta språkanalysverktyg på icke-engelska fält för att tillämpa språkreglerna för det inbyggda språket.

När du lägger till stavningskontroll i innehåll som också genomgår språkanalys kan du uppnå bättre resultat med samma språk för varje indexerings- och frågebearbetningssteg. Om ett fälts innehåll till exempel indexerades med hjälp av språkanalysatorn "fr.microsoft" bör frågor och stavningskontroll alla använda ett franskt lexikon eller språkbibliotek i något formulär.

Så här sammanfattar du hur språkbibliotek används i Azure AI Search:

  • Språkanalysverktyg kan anropas under indexering och frågekörning och är antingen Apache Lucene (till exempel "de.lucene") eller Microsoft ("de.microsoft).

  • Språklexikon som anropas under stavningskontroll anges med någon av språkkoderna i språktabellen som stöds.

I en frågebegäran gäller värdet som tilldelats till queryLanguage för speller.

Kommentar

Språkkonsekvens mellan olika egenskapsvärden är bara ett problem om du använder språkanalysverktyg. Om du använder språkagnostiska analysverktyg (till exempel nyckelord, enkel, standard, stopp, blanksteg eller standardasciifolding.lucene), queryLanguage kan värdet vara vad du vill.

Även om innehåll i ett sökindex kan bestå av flera språk är frågeindata troligtvis i ett. Sökmotorn söker inte efter kompatibiliteten queryLanguageför , språkanalyseraren och språket där innehållet består, så se till att omfångsfrågorna omfångsbegränsas för att undvika felaktiga resultat.

Nästa steg