Förbättra ett index med analysverktyg och tokeniserade termer

Slutförd

Azure AI Search konfigureras som standard för att analysera text och identifiera token som är användbara i ditt index. Rätt token ser till att användarna kan hitta de dokument de behöver snabbt. I de flesta fall ger standardkonfigurationen ett optimalt index. Men när du har ovanliga eller unika fält kanske du vill konfigurera exakt hur text analyseras.

Här får du lära dig hur du definierar en anpassad analysator för att styra hur innehållet i ett fält delas upp i token för inkludering i indexet.

När AI Search indexerar ditt innehåll hämtas text. För att skapa ett användbart index, med termer som hjälper användarna att hitta dokument, behöver texten bearbetas. Till exempel:

  • Texten ska delas upp i ord, ofta med blanksteg och skiljetecken som avgränsare.
  • Stoppord, till exempel "the" och "it", bör tas bort eftersom användarna inte söker efter dem.
  • Ord bör reduceras till deras rotform. Till exempel bör tidigare spända ord, till exempel "ran", ersättas med aktuella spända ord, till exempel "run".

I AI Search utförs den här typen av bearbetning av analysverktyg. Om du inte anger en analysator för ett fält används lucene-standardanalysatorn. Lucene-standardanalysatorn är ett bra val för de flesta fält eftersom den kan bearbeta många språk och returnera användbara token för ditt index.

Du kan också ange en av analysverktygen som är inbyggda i AI Search. Inbyggda analysverktyg är av två typer:

  • Språkanalysverktyg. Om du behöver avancerade funktioner för specifika språk, till exempel lemmatisering, orddecompounding och entitetsigenkänning, använder du en inbyggd språkanalys. Microsoft tillhandahåller 50 analysverktyg för olika språk.
  • Specialiserade analysverktyg. Dessa analysverktyg är språkagnostiska och används för specialiserade fält som postnummer eller produkt-ID: er. Du kan till exempel använda PatternAnalyzer och ange ett reguljärt uttryck för att matcha tokenavgränsare.

Vad är en anpassad analysator?

De inbyggda analysverktygen ger dig många alternativ, men ibland behöver du en analysator med ovanligt beteende för ett fält. I dessa fall kan du skapa en anpassad analysator.

En anpassad analysverktyg består av:

  • Teckenfilter. Dessa filter bearbetar en sträng innan den når tokenizern.
  • Tokenizers. Dessa komponenter delar upp texten i token som ska läggas till i indexet.
  • Tokenfilter. Dessa filter tar bort eller ändrar token som genereras av tokenizern.

Nu ska vi titta närmare på de här komponenterna.

Teckenfilter

Vissa åtgärder kan behöva slutföras i texten innan den delas upp i token. Teckenfilter aktiverar dessa åtgärder. Det finns tre teckenfilter som du kan använda:

  • html_strip. Det här filtret tar bort HTML-konstruktioner som taggar och attribut.
  • kartläggning. Med det här filtret kan du ange mappningar som ersätter en sträng med en annan. Du kan till exempel ange en mappning som ersätter TX med Texas.
  • pattern_replace. Med det här filtret kan du ange ett reguljärt uttryck som identifierar mönster i indatatexten och hur matchande text ska ersättas.

Tokenizers

Tokenizer är den komponent som delar upp texten i de token som ska lagras i indexet. Tokenizers delar också upp ord i sina rotformer. Ofta är en token ett enda ord, men du kanske vill skapa ovanliga token, till exempel:

  • En fullständig postadress.
  • En fullständig URL eller e-postadress.
  • Ord som baseras på grammatiken för ett visst språk.

Det finns 13 olika tokenizers att välja mellan. Dessa tokenizers omfattar:

  • klassisk. Denna tokenizer bearbetar text baserat på grammatik för europeiska språk.
  • nyckelord. Den här tokeniseraren genererar hela indata som en enda token. Använd den här tokenizern för fält som alltid ska indexeras som ett värde.
  • gemen. Den här tokeniseraren delar upp text med icke-bokstäver och ändrar sedan de resulterande token till alla gemener.
  • microsoft_language_tokenizer. Den här tokeniseraren delar upp text baserat på grammatiken för det språk du anger.
  • mönster. Den här tokeniseraren delar upp texter där den matchar ett reguljärt uttryck som du anger.
  • blanksteg. Den här tokeniseraren delar upp text där det finns tomt utrymme.

Kommentar

En fullständig lista över tokenizers finns i Lägga till anpassade analysverktyg i strängfält i ett Azure AI Search-index i avsnittet Läs mer nedan.

Tokenfilter

När tokenizern har delat upp den inkommande texten i token kanske du vill lägga till lite extra bearbetning, till exempel att ta bort stoppord eller trimma skiljetecken. Du kan köra den här bearbetningen genom att ange ett tokenfilter. Det finns 41 olika tokenfilter tillgängliga, inklusive:

  • Språkspecifika filter, till exempel arabic_normalization. Dessa filter tillämpar språkspecifika grammatikregler för att säkerställa att ordformer tas bort och ersätts med rötter.
  • apostrofer. Det här filtret tar bort alla apostrofer från en token och eventuella tecken efter apostrofen.
  • klassisk. Det här filtret tar bort engelska possessives och punkter från förkortningar.
  • behålla. Det här filtret tar bort alla token som inte innehåller ett eller flera ord från en lista som du anger.
  • längd. Det här filtret tar bort alla token som är längre än ditt angivna minimum eller kortare än det angivna maxvärdet.
  • trimma. Det här filtret tar bort alla inledande och avslutande blanksteg från token.

Kommentar

En fullständig lista över tokenfilter finns i Lägga till anpassade analysverktyg i strängfält i ett Azure AI Search-index i avsnittet Läs mer nedan.

Skapa ett anpassat analysverktyg

Du skapar en anpassad analysverktyg genom att ange den när du definierar indexet. Du måste göra detta med JSON-kod – det går inte att ange ett anpassat index i Azure Portal. Använd avsnittet analyzers i indexet vid designtillfället. Du kan bara inkludera en tokenizer men ett eller flera teckenfilter och ett eller flera tokenfilter. Använd ett unikt namn för analysatorn och ange @odata.type egenskapen till Microsoft.Azure.Search.CustomAnalyzer.

I det här exemplet tar ett teckenfilter bort HTML-formatering, en tokeniserare delar upp texten enligt isländska grammatik och ett tokenfilter tar bort apostrofer:

"analyzers":(optional)[
   {
      "name":"ContosoAnalyzer",
      "@odata.type":"#Microsoft.Azure.Search.CustomAnalyzer",
      "charFilters":[
         "WebContentRemover"
      ],
      "tokenizer":"IcelandicTokenizer",
      "tokenFilters":[
         "ApostropheFilter"
      ]
   }
],
"charFilters":(optional)[
   {
      "name":"WebContentRemover",
      "@odata.type":"#html_strip"
   }
],
"tokenizers":(optional)[
   {
      "name":"IcelandicTokenizer",
      "@odata.type":"#microsoft_language_tokenizer",
      "language":"icelandic",
      "isSearchTokenizer":false,
   }
],
"tokenFilters":(optional)[
   {
      "name":"ApostropheFilter",
      "@odata.type":"#apostrophe"
   }
]

Testa en anpassad analys

När du har definierat din anpassade analysator som en del av ditt index kan du använda REST API:ets analysera text-funktion för att skicka testtext och se till att analysatorn returnerar token korrekt. Använd alla REST-testverktyg för att formulera dessa begäranden, till exempel det populära Postman-programmet .

Dina REST-testbegäranden bör se ut så här:

POST https://<search service name>.search.windows.net/indexes/<index name>/analyze?api-version=<api-version>
   Content-Type: application/json
   api-key: <api key>

I den här begäran:

  • Ersätt <search service name> med namnet på din AI Search-resurs.
  • Ersätt <index name> med namnet på indexet som innehåller den anpassade analysatorn.
  • Ersätt <api-version> med versionsnumret för REST-API:et.
  • Ersätt <api-key> med åtkomstnyckeln för din AI Search-resurs. Du kan hämta den här nyckeln från Azure Portal.

Din begäran måste också innehålla en JSON-brödtext som den här:

{
  "text": "Test text to analyze.",
  "analyzer": "<analyzer name>"
}

Ersätt <analyzer name> med det namn som du angav när du definierade den anpassade analysatorn. Se till att testa med många olika text värden tills du är säker på att den anpassade analysatorn fungerar som förväntat.

Använda en anpassad analysator för ett fält

När du har definierat och testat en anpassad analysator kan du konfigurera indexet så att det används. Du kan ange en analysator för varje fält i indexet.

Du kan använda fältet analyzer när du vill använda samma analysverktyg för både indexering och sökning:

"fields": [
 {
   "name": "IcelandicDescription",
   "type": "Edm.String",
   "retrievable": true,
   "searchable": true,
   "analyzer": "ContosoAnalyzer",
   "indexAnalyzer": null,
   "searchAnalyzer": null
 },

Du kan också använda en annan analysator när du indexerar fältet och när du söker i fältet. Använd den här konfigurationen om du behöver en annan uppsättning bearbetningssteg när du indexera ett fält till när du analyserar en fråga:

"fields": [
 {
   "name": "IcelandicDescription",
   "type": "Edm.String",
   "retrievable": true,
   "searchable": true,
   "analyzer": null,
   "indexAnalyzer": "ContosoIndexAnalyzer",
   "searchAnalyzer": "ContosoSearchAnalyzer"
 },

Läs mer

Lägga till anpassade analysverktyg i strängfält i ett Azure AI Search-index