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 en queryLanguage instelt. Spellingcontrole werkt op tekenreeksen die zijn doorgegeven in de search 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 -code gebruiken die u hebt gewijzigd om REST-aanroepen naar de preview-API's uit te voeren. U kunt ook bètaversies van de Azure SDK's gebruiken.

Clientbibliotheek Versies
REST-API Versies 2020-06-30-Preview en hoger. De huidige versie is 2023-10-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

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=2020-06-30-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=2020-06-30-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 classificatie configureren voor meer informatie.

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
}

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 in openbare preview queryLanguage . Semantische classificatie 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 queryLanguagespeller.

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 queryLanguagetaalanalyse 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.

Volgende stappen