Een index verbeteren met analyses en tokenized termen

Voltooid

Azure AI Search is standaard geconfigureerd om tekst te analyseren en tokens te identificeren die nuttig zijn in uw index. De juiste tokens zorgen ervoor dat gebruikers snel de documenten kunnen vinden die ze nodig hebben. In de meeste gevallen produceert de standaardconfiguratie een optimale index. Als u echter ongebruikelijke of unieke velden hebt, wilt u mogelijk precies configureren hoe tekst wordt geanalyseerd.

Hier leert u hoe u een aangepaste analyse definieert om te bepalen hoe de inhoud van een veld wordt gesplitst in tokens voor opname in de index.

Wanneer AI Search uw inhoud indexeert, wordt tekst opgehaald. Als u een nuttige index wilt maken, met termen waarmee gebruikers documenten kunnen vinden, moet die tekst worden verwerkt. Voorbeeld:

  • De tekst moet worden opgesplitst in woorden, vaak met behulp van spaties en leestekens als scheidingstekens.
  • Stopwords, zoals 'the' en 'it', moeten worden verwijderd omdat gebruikers niet naar hen zoeken.
  • Woorden moeten worden verkleind tot hun hoofdformulier. Eerdere gespannen woorden, zoals 'uitgevoerd', moeten bijvoorbeeld worden vervangen door huidige gespannen woorden, zoals 'run'.

In AI Search wordt dit soort verwerking uitgevoerd door analyses. Als u geen analyse voor een veld opgeeft, wordt de standaard Lucene-analyse gebruikt. De standaard Lucene Analyzer is een goede keuze voor de meeste velden, omdat het veel talen kan verwerken en nuttige tokens voor uw index kan retourneren.

U kunt ook een van de analyses opgeven die zijn ingebouwd in AI Search. Ingebouwde analysen zijn van twee typen:

  • Taalanalyses. Als u geavanceerde mogelijkheden nodig hebt voor specifieke talen, zoals lemmatisatie, woordontbreking en entiteitsherkenning, gebruikt u een ingebouwde taalanalyse. Microsoft biedt 50 analyses voor verschillende talen.
  • Gespecialiseerde analyses. Deze analysefuncties zijn taalneutraal en worden gebruikt voor gespecialiseerde velden, zoals postcodes of product-id's. U kunt bijvoorbeeld de PatternAnalyzer gebruiken en een reguliere expressie opgeven die overeenkomt met tokenscheidingstekens.

Wat is een aangepaste analyse?

De ingebouwde analyses bieden u veel opties, maar soms hebt u een analyse met ongebruikelijk gedrag voor een veld nodig. In deze gevallen kunt u een aangepaste analyse maken.

Een aangepaste analyse bestaat uit:

  • Tekenfilters. Deze filters verwerken een tekenreeks voordat deze de tokenizer bereikt.
  • Tokenizers. Deze onderdelen delen de tekst op in tokens die aan de index moeten worden toegevoegd.
  • Tokenfilters. Met deze filters worden de tokens die door de tokenizer worden verzonden, verwijderd of gewijzigd.

Laten we deze onderdelen nader bekijken.

Tekenfilters

Sommige bewerkingen moeten mogelijk worden voltooid op de tekst voordat deze worden gesplitst in tokens. Met tekenfilters worden deze bewerkingen ingeschakeld. Er zijn drie tekenfilters die u kunt gebruiken:

  • html_strip. Met dit filter worden HTML-constructies, zoals tags en kenmerken, verwijderd.
  • Toewijzing. Met dit filter kunt u toewijzingen opgeven die de ene tekenreeks vervangen door een andere. U kunt bijvoorbeeld een toewijzing opgeven die TX vervangt door Texas.
  • pattern_replace. Met dit filter kunt u een reguliere expressie opgeven waarmee patronen in de invoertekst worden geïdentificeerd en hoe overeenkomende tekst moet worden vervangen.

Tokenizers

De tokenizer is het onderdeel waarmee de tekst wordt verdeeld in de tokens die in de index worden opgeslagen. Tokenizers splitsen ook woorden op in hun hoofdformulieren. Vaak is een token één woord, maar u kunt ongebruikelijke tokens maken, zoals:

  • Een volledig postadres.
  • Een volledige URL of e-mailadres.
  • Woorden op basis van de grammatica van een specifieke taal.

Er zijn 13 verschillende tokenizers waaruit u kunt kiezen. Deze tokenizers zijn onder andere:

  • Klassieke. Deze tokenizer verwerkt tekst op basis van grammatica voor Europese talen.
  • Trefwoord. Deze tokenizer verzendt de volledige invoer als één token. Gebruik deze tokenizer voor velden die altijd als één waarde moeten worden geïndexeerd.
  • Kleine letters. Deze tokenizer verdeelt tekst bij niet-letters en wijzigt vervolgens de resulterende tokens in kleine letters.
  • microsoft_language_tokenizer. Deze tokenizer verdeelt tekst op basis van de grammatica van de taal die u opgeeft.
  • Patroon. Deze tokenizer verdeelt teksten waarbij deze overeenkomt met een reguliere expressie die u opgeeft.
  • Whitespace. Met deze tokenizer wordt tekst verdeeld waar er witruimte is.

Notitie

Zie Aangepaste analysefuncties toevoegen aan tekenreeksvelden in een Azure AI Search-index in de sectie Meer informatie hieronder voor een volledige lijst met tokenizers.

Tokenfilters

Zodra de tokenizer de binnenkomende tekst in tokens heeft verdeeld, kunt u extra verwerking toevoegen, zoals het verwijderen van stopwoorden of het bijsnijden van interpunctiemarkeringen. U kunt deze verwerking uitvoeren door een tokenfilter op te geven. Er zijn veertig verschillende tokenfilters beschikbaar, waaronder:

  • Taalspecifieke filters, zoals arabic_normalization. Met deze filters worden taalspecifieke grammaticaregels toegepast om ervoor te zorgen dat vormen van woorden worden verwijderd en vervangen door wortels.
  • apostrof. Met dit filter verwijdert u alle apostrof uit een token en alle tekens na de apostrof.
  • Klassieke. Dit filter verwijdert Engelse bezitwoorden en punten uit acroniemen.
  • Houden. Met dit filter verwijdert u een token dat geen of meer woorden bevat uit een lijst die u opgeeft.
  • Lengte. Met dit filter verwijdert u een token dat langer is dan het opgegeven minimum of korter is dan het opgegeven maximum.
  • Trim. Met dit filter verwijdert u alle voorloop- en volgspaties uit tokens.

Notitie

Zie Aangepaste analysefuncties toevoegen aan tekenreeksvelden in een Azure AI Search-index in de sectie Meer informatie hieronder voor een volledige lijst met tokenfilters.

Een aangepaste analyse maken

U maakt een aangepaste analyse door deze op te geven wanneer u de index definieert. U moet dit doen met JSON-code. U kunt geen aangepaste index opgeven in Azure Portal. Gebruik de analyzers sectie van de index tijdens het ontwerp. U kunt slechts één tokenizer opnemen, maar een of meer tekenfilters en een of meer tokenfilters. Gebruik een unieke naam voor uw analyse en stel de @odata.type eigenschap in op Microsoft.Azure.Search.CustomAnalyzer.

In dit voorbeeld verwijdert een tekenfilter HTML-opmaak, splitst een tokenizer de tekst op basis van de grammatica van IJslands en verwijdert een tokenfilter apostrofs:

"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"
   }
]

Een aangepaste analyse testen

Nadat u uw aangepaste analyse hebt gedefinieerd als onderdeel van uw index, kunt u de functie Analyze Text van de REST API gebruiken om testtekst in te dienen en ervoor te zorgen dat de analyse tokens correct retourneert. Gebruik een REST-testprogramma om deze aanvragen te formuleren, zoals de populaire Postman-toepassing .

Uw TEST REST-aanvragen moeten er als volgt uitzien:

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

In deze aanvraag:

  • Vervang door <search service name> de naam van uw AI Search-resource.
  • Vervang <index name> door de naam van de index die de aangepaste analyse bevat.
  • Vervang <api-version> door het versienummer van de REST API.
  • Vervang <api-key> door de toegangssleutel voor uw AI Search-resource. U kunt deze sleutel verkrijgen via Azure Portal.

Uw aanvraag moet ook een JSON-hoofdtekst als volgt bevatten:

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

Vervang door <analyzer name> de naam die u hebt opgegeven bij het definiëren van de aangepaste analyse. Test met veel verschillende text waarden totdat u zeker weet dat de aangepaste analyse werkt zoals verwacht.

Een aangepaste analyse gebruiken voor een veld

Nadat u een aangepaste analyse hebt gedefinieerd en getest, kunt u uw index configureren om deze te gebruiken. U kunt een analyse opgeven voor elk veld in uw index.

U kunt het analyzer veld gebruiken als u dezelfde analyse wilt gebruiken voor zowel indexeren als zoeken:

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

Het is ook mogelijk om een andere analyse te gebruiken bij het indexeren van het veld en bij het doorzoeken van het veld. Gebruik deze configuratie als u een andere set verwerkingsstappen nodig hebt wanneer u een veld indexeert voor wanneer u een query analyseert:

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