Esercitazione: Usare REST e intelligenza artificiale per generare contenuto ricercabile dai BLOB di Azure

Se si dispone di testo o immagini non strutturati in Archiviazione BLOB di Azure, una pipeline di arricchimento tramite intelligenza artificiale può estrarre informazioni e creare nuovo contenuto per scenari di ricerca full-text o knowledge mining.

In questa esercitazione REST si apprenderà come:

  • Configurare un ambiente di sviluppo.
  • Definire una pipeline che usa OCR, rilevamento della lingua, riconoscimento delle entità ed estrazione di frasi chiave.
  • Eseguire la pipeline per richiamare trasformazioni e per creare e caricare un indice di ricerca.
  • Esplorare i risultati tramite un ricerca full-text e una sintassi di query avanzata.

Se non si ha una sottoscrizione di Azure, aprire un account gratuito prima di iniziare.

Panoramica

Questa esercitazione usa Postman e le API REST di Ricerca cognitiva di Azure per creare un'origine dati, un indice, un indicizzatore e un set di competenze.

L'indicizzatore si connette ad Archiviazione BLOB di Azure e recupera il contenuto, che è necessario caricare in anticipo. L'indicizzatore richiama quindi un set di competenze per l'elaborazione specializzata e inserisce il contenuto arricchito in un indice di ricerca.

Il set di competenze è collegato a un indicizzatore. Usa competenze predefinite di Microsoft per trovare ed estrarre informazioni. I passaggi della pipeline includono il riconoscimento ottico dei caratteri (OCR) sulle immagini, il rilevamento della lingua, l'estrazione di frasi chiave e il riconoscimento di entità (organizzazioni, posizioni, persone). Le nuove informazioni create dalla pipeline vengono archiviate in nuovi campi in un indice. Dopo aver popolato l'indice, è possibile usare tali campi in query, facet e filtri.

Prerequisiti

Nota

È possibile usare il servizio gratuito per questa esercitazione. Un servizio di ricerca gratuito consente di usare solo tre indici, tre indicizzatori e tre origini dati. Questa esercitazione crea un elemento per ogni tipo. Prima di iniziare, assicurarsi che lo spazio nel servizio sia sufficiente per accettare le nuove risorse.

Scaricare i file

I dati di esempio sono costituiti da 14 file di tipo di contenuto misto che verranno caricati in Archiviazione BLOB di Azure in un passaggio successivo.

  1. Ottenere i file da azure-search-sample-data/ai-enrichment-mixed-media/ e copiarli nel computer locale.

  2. Ottenere quindi il codice sorgente, un file di raccolta Postman, per questa esercitazione. Il codice sorgente è disponibile in azure-search-postman-samples/tree/master/Tutorial.

1 - Creare i servizi

Questa esercitazione usa Ricerca cognitiva di Azure per l'indicizzazione e le query, Servizi cognitivi nel back-end per l'arricchimento tramite intelligenza artificiale e Archiviazione BLOB di Azure per fornire i dati. Questa esercitazione non supera l'allocazione gratuita di 20 transazioni per indicizzatore al giorno in Servizi cognitivi, quindi gli unici servizi che è necessario creare sono il servizio di ricerca e quello di archiviazione.

Se possibile, crearli entrambi nella stessa area e nello stesso gruppo di risorse per motivi di prossimità e gestibilità. In pratica, l'account di archiviazione di Azure può trovarsi in qualsiasi area.

Iniziare con Archiviazione di Azure

  1. Accedere al portale di Azure e fare clic su + Crea una risorsa.

  2. Cercare account di archiviazione e selezionare l'offerta Account di archiviazione di Microsoft.

    Create Storage account

  3. Nella scheda Informazioni di base gli elementi seguenti sono obbligatori. Accettare le impostazioni predefinite per tutti gli altri elementi.

    • Gruppo di risorse. Selezionarne uno esistente o crearne uno nuovo, ma usare lo stesso gruppo per tutti i servizi in modo che sia possibile gestirli collettivamente.

    • Nome account di archiviazione. Se si ritiene che potrebbero esistere più risorse dello stesso tipo, usare il nome per distinguerle in base al tipo e all'area, ad esempio blobstoragewestus.

    • Località. Se possibile, scegliere la stessa località usata per Ricerca cognitiva di Azure e Servizi cognitivi. La scelta di un'unica località consente di azzerare i costi correlati alla larghezza di banda.

    • Tipologia account. Scegliere l'impostazione predefinita Archiviazione (utilizzo generico v2) .

  4. Selezionare Rivedi e crea per creare il servizio.

  5. Dopo la creazione, selezionare Vai alla risorsa per aprire la pagina Panoramica.

  6. Selezionare Servizio BLOB .

  7. Selezionare + Contenitore per creare un contenitore e denominarlo cog-search-demo.

  8. Selezionare cog-search-demo e quindi selezionare Carica per aprire la cartella in cui sono stati salvati i file di download. Selezionare tutti i file. Selezionare Carica.

    Screenshot of the files in File Explorer.

  9. Prima di uscire da Archiviazione di Azure, ottenere una stringa di connessione in modo che sia possibile definire una connessione in Ricerca cognitiva di Azure.

    1. Tornare alla pagina Panoramica dell'account di archiviazione (come esempio è stato usato blobstragewestus).

    2. Nel riquadro di spostamento sinistro selezionare Chiavi di accesso e copiare una delle stringhe di connessione.

    La stringa di connessione è un URL simile all'esempio seguente:

    DefaultEndpointsProtocol=https;AccountName=cogsrchdemostorage;AccountKey=<your account key>;EndpointSuffix=core.windows.net
    
  10. Salvare la stringa di connessione nel Blocco note. Sarà necessaria più avanti durante la configurazione della connessione all'origine dati.

Servizi cognitivi

L'arricchimento tramite intelligenza artificiale è supportato da Servizi cognitivi, tra cui servizio linguistico e Visione artificiale per l'elaborazione del linguaggio naturale e dell'immagine. Se l'obiettivo era completare un prototipo o un progetto effettivo, a questo punto si effettua il provisioning di Servizi cognitivi (nella stessa area di Ricerca cognitiva di Azure) in modo che sia possibile collegarlo a un set di competenze.

Per questo esercizio, tuttavia, è possibile ignorare il provisioning delle risorse perché Ricerca cognitiva di Azure può connettersi a Servizi cognitivi eseguono 20 transazioni per ogni esecuzione dell'indicizzatore, gratuitamente. Dato che in questa esercitazione vengono usate 14 transazioni, l'allocazione gratuita è sufficiente. Per progetti di dimensioni maggiori, pianificare il provisioning di Servizi cognitivi al livello S0 con pagamento in base al consumo.

Il terzo componente è Ricerca cognitiva di Azure, un servizio di ricerca che è possibile creare nel portale o trovare nella sottoscrizione se esiste già.

Per completare questa procedura dettagliata, è possibile usare il livello gratuito.

Per interagire con il servizio Ricerca cognitiva di Azure, sono necessari l'URL del servizio e una chiave di accesso.

  1. Accedere al portale di Azure e ottenere il nome del servizio di ricerca nella relativa pagina Panoramica. È possibile verificare il nome del servizio esaminando l'URL dell'endpoint. Se l'URL dell'endpoint fosse https://mydemo.search.windows.net, il nome del servizio sarebbe mydemo.

  2. In Impostazioni>Chiavi ottenere una chiave amministratore per diritti completi sul servizio. È possibile copiare la chiave primaria o secondaria.

    Get the service name and admin key

Tutte le richieste HTTP a un servizio di ricerca richiedono una chiave API. La presenza di una chiave valida stabilisce una relazione di trust, in base a singole richieste, tra l'applicazione che invia la richiesta e il servizio che la gestisce.

2 - Configurare Postman

  1. Avviare Postman, importare la raccolta e configurare le variabili di ambiente. Se non si ha familiarità con questo strumento, vedere Esplorare le API REST di Ricerca cognitiva di Azure.

  2. Sarà necessario specificare un nome del servizio di ricerca, una chiave API amministratore, un nome di indice, una stringa di connessione all'account di archiviazione di Azure e il nome del contenitore.

    Screenshot of the Variables page in Postman.

I metodi di richiesta usati in questa raccolta sono PUT e GET. Si useranno i metodi per creare un'origine dati, un set di competenze, un indice e un indicizzatore.

3 - Creare la pipeline

In Ricerca cognitiva di Azure l'arricchimento avviene durante l'indicizzazione (o l'inserimento dati). In questa parte della procedura dettagliata vengono creati quattro oggetti: origine dati, definizione dell'indice, set di competenze e indicizzatore.

Passaggio 1: Creare un'origine dati

Chiamare Create Data Source (Crea origine dati) per impostare la stringa di connessione sul contenitore BLOB contenente i file di dati di esempio.

  1. Selezionare la richiesta "Crea un'origine dati".

  2. Il corpo della richiesta è JSON e include le proprietà di un oggetto origine dati dell'indicizzatore. La stringa di connessione include le credenziali per l'accesso al servizio.

    {   
        "description" : "Demo files to demonstrate cognitive search capabilities.",  
        "type" : "azureblob",
        "credentials" : { 
           "connectionString": "{{azure-storage-connection-string}}"
        },  
      "container" : { 
        "name" : "{{blob-container}}"
      }
    }
    
  3. Inviare la richiesta. Dovrebbe essere visualizzato il codice di stato 201 a conferma dell'esito positivo dell'operazione.

Se si è verificato un errore 403 o 404, controllare la chiave API di amministrazione della ricerca e la stringa di connessione di Archiviazione di Azure.

Passaggio 2: Creare un set di competenze

Chiamare Crea set di competenze per specificare i passaggi di arricchimento applicati al contenuto.

  1. Selezionare la richiesta "Crea un set di competenze".

  2. Il corpo della richiesta specifica le competenze predefinite seguenti:

    Competenza Descrizione
    Riconoscimento ottico dei caratteri Riconosce il testo e i numeri nei file di immagine.
    Text Merge Crea "contenuto unito" che ricombina il contenuto separato in precedenza, utile per i documenti con immagini incorporate (PDF, DOCX e così via). Le immagini e il testo vengono separati durante la fase di cracking del documento. La competenza di merge li ricombina inserendo qualsiasi testo riconosciuto, didascalie di immagini o tag creati durante l'arricchimento nella stessa posizione in cui l'immagine è stata estratta dal documento.

    Quando si lavora con contenuto unito in un set di competenze, questo nodo sarà inclusivo di tutto il testo nel documento, inclusi i documenti di sola testo che non subiscono mai analisi OCR o immagine.
    Rilevamento lingua Rileva il linguaggio e restituisce un nome della lingua o un codice. Nei set di dati multilingue un campo linguistico può essere utile per i filtri.
    Riconoscimento delle entità Estrae i nomi di persone, organizzazioni e posizioni dal contenuto unito.
    Divisione del testo Interrompe il contenuto unito di grandi dimensioni in blocchi più piccoli prima di chiamare la competenza di estrazione delle frasi chiave. L'estrazione delle frasi chiave accetta input di al massimo 50.000 caratteri. Alcuni dei file di esempio devono essere suddivisi per rispettare questo limite.
    Estrazione frasi chiave Estrae le frasi chiave principali.

    Ogni competenza viene eseguita sul contenuto del documento. Durante l'elaborazione, Ricerca cognitiva di Azure esegue il cracking di ogni documento per leggere il contenuto da formati di file diversi. Il testo trovato con origine nel file di origine viene inserito in un campo content generato, uno per ogni documento. L'input diventa quindi "/document/content".

    Dal momento che per l'estrazione di frasi chiave si usa la competenza di suddivisione del testo per suddividere file più grandi in pagine, il contesto per la competenza di estrazione delle frasi chiave è "document/pages/*" (per ogni pagina del documento) invece di "/document/content".

    {
      "description": "Apply OCR, detect language, extract entities, and extract key-phrases.",
      "cognitiveServices": null,
      "skills":
      [
        {
          "@odata.type": "#Microsoft.Skills.Vision.OcrSkill",
          "context": "/document/normalized_images/*",
          "defaultLanguageCode": "en",
          "detectOrientation": true,
          "inputs": [
            {
              "name": "image",
              "source": "/document/normalized_images/*"
            }
          ],
          "outputs": [
            {
              "name": "text"
            }
          ]
        },
        {
          "@odata.type": "#Microsoft.Skills.Text.MergeSkill",
          "description": "Create merged_text, which includes all the textual representation of each image inserted at the right location in the content field. This is useful for PDF and other file formats that supported embedded images.",
          "context": "/document",
          "insertPreTag": " ",
          "insertPostTag": " ",
          "inputs": [
            {
              "name":"text", 
              "source": "/document/content"
            },
            {
              "name": "itemsToInsert", 
              "source": "/document/normalized_images/*/text"
            },
            {
              "name":"offsets", 
              "source": "/document/normalized_images/*/contentOffset" 
            }
          ],
          "outputs": [
            {
              "name": "mergedText", 
              "targetName" : "merged_text"
            }
          ]
        },
        {
          "@odata.type": "#Microsoft.Skills.Text.SplitSkill",
          "textSplitMode": "pages",
          "maximumPageLength": 4000,
          "defaultLanguageCode": "en",
          "context": "/document",
          "inputs": [
            {
              "name": "text",
              "source": "/document/merged_text"
            }
          ],
          "outputs": [
            {
              "name": "textItems",
              "targetName": "pages"
            }
          ]
        },
        {
          "@odata.type": "#Microsoft.Skills.Text.LanguageDetectionSkill",
          "description": "If you have multilingual content, adding a language code is useful for filtering",
          "context": "/document",
          "inputs": [
            {
              "name": "text",
              "source": "/document/merged_text"
            }
          ],
          "outputs": [
            {
              "name": "languageName",
              "targetName": "language"
            }
          ]
        },
        {
          "@odata.type": "#Microsoft.Skills.Text.KeyPhraseExtractionSkill",
          "context": "/document/pages/*",
          "inputs": [
            {
              "name": "text",
              "source": "/document/pages/*"
            }
          ],
          "outputs": [
            {
              "name": "keyPhrases",
              "targetName": "keyPhrases"
            }
          ]
        },
        {
          "@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
          "categories": ["Organization"],
          "context": "/document",
          "inputs": [
            {
              "name": "text",
              "source": "/document/merged_text"
            }
          ],
          "outputs": [
            {
              "name": "organizations",
              "targetName": "organizations"
            }
          ]
        },
        {
          "@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
          "categories": ["Location"],
          "context": "/document",
          "inputs": [
            {
              "name": "text",
              "source": "/document/merged_text"
            }
          ],
          "outputs": [
            {
              "name": "locations",
              "targetName": "locations"
            }
          ]
        },
        {
          "@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
          "categories": ["Person"],
          "context": "/document",
          "inputs": [
            {
              "name": "text",
              "source": "/document/merged_text"
            }
          ],
          "outputs": [
            {
              "name": "persons",
              "targetName": "persons"
            }
          ]
        }
      ]
    }
    

    Di seguito è riportata una rappresentazione grafica di una parte del set di competenze.

    Understand a skillset

  3. Inviare la richiesta. Postman dovrebbe restituire un codice di stato 201 a conferma dell'esito positivo dell'operazione.

Nota

Gli output possono essere mappati a un indice, usati come input per una competenza a valle, o entrambi, come nel caso del codice di lingua. Nell'indice, un codice di lingua è utile per le operazioni di filtro. Per altre informazioni sui concetti di base dei set di competenze, vedere How to create a skillset (Come creare un set di competenze).

Passaggio 3: Creare un indice

Chiamare Crea indice per fornire lo schema usato per creare indici invertiti e altri costrutti in Ricerca cognitiva di Azure. Il componente più grande di un indice è la raccolta di campi, in cui il tipo di dati e gli attributi determinano il contenuto e il comportamento in Ricerca cognitiva di Azure.

  1. Selezionare la richiesta "Crea un indice".

  2. Il corpo della richiesta definisce lo schema dell'indice di ricerca. Una raccolta di campi richiede che un campo venga designato come chiave. Per il contenuto BLOB, questo campo è spesso il "metadata_storage_path" che identifica in modo univoco ogni BLOB nel contenitore.

    In questo schema il campo "text" riceve l'output OCR, "content" riceve l'output unito, "language" riceve l'output del rilevamento della lingua. Frasi chiave, entità e diversi campi generati dall'archiviazione BLOB includono le voci rimanenti.

    {
      "fields": [
        {
          "name": "text",
          "type": "Collection(Edm.String)",
          "searchable": true,
          "sortable": false,
          "filterable": true,
          "facetable": false
        },
        {
          "name": "content",
          "type": "Edm.String",
          "searchable": true,
          "sortable": false,
          "filterable": false,
          "facetable": false
        },
        {
          "name": "language",
          "type": "Edm.String",
          "searchable": false,
          "sortable": true,
          "filterable": true,
          "facetable": false
        },
        {
          "name": "keyPhrases",
          "type": "Collection(Edm.String)",
          "searchable": true,
          "sortable": false,
          "filterable": true,
          "facetable": true
        },
        {
          "name": "organizations",
          "type": "Collection(Edm.String)",
          "searchable": true,
          "sortable": false,
          "filterable": true,
          "facetable": true
        },
        {
          "name": "persons",
          "type": "Collection(Edm.String)",
          "searchable": true,
          "sortable": false,
          "filterable": true,
          "facetable": true
        },
        {
          "name": "locations",
          "type": "Collection(Edm.String)",
          "searchable": true,
          "sortable": false,
          "filterable": true,
          "facetable": true
        },
        {
          "name": "metadata_storage_path",
          "type": "Edm.String",
          "key": true,
          "searchable": true,
          "sortable": false,
          "filterable": false,
          "facetable": false
        },
        {
          "name": "metadata_storage_name",
          "type": "Edm.String",
          "searchable": true,
          "sortable": false,
          "filterable": false,
          "facetable": false
        }
      ]
    }
    
  3. Inviare la richiesta. Postman dovrebbe restituire un codice di stato 201 a conferma dell'esito positivo dell'operazione.

Passaggio 4: Creare ed eseguire un indicizzatore

Chiamare Crea indicizzatore per guidare la pipeline. I tre componenti creati finora (origine dati, set di competenze, indice) costituiscono i valori di input di un indicizzatore. La creazione dell'indicizzatore in Ricerca cognitiva di Azure è l'evento che mette in moto l'intera pipeline.

  1. Selezionare la richiesta "Crea un indicizzatore".

  2. Il corpo della richiesta include riferimenti agli oggetti precedenti, le proprietà di configurazione necessarie per l'elaborazione delle immagini e due tipi di mapping dei campi.

    "fieldMappings" vengono elaborati prima del set di competenze, inviando contenuto dall'origine dati ai campi di destinazione in un indice. I mapping dei campi verranno usati per inviare all'indice contenuto esistente e non modificato. Se i nomi e i tipi di campo sono uguali alle due estremità, non è necessario alcun mapping.

    "outputFieldMappings" sono per i campi creati dalle competenze, dopo l'esecuzione del set di competenze. I riferimenti a sourceFieldName in outputFieldMappings non esistono fino a quando non vengono creati dal cracking o dall'arricchimento di documenti. L'oggetto targetFieldName è un campo in un indice, definito nello schema dell'indice.

    {
      "dataSourceName" : "{{index_name}}-datasource",
      "targetIndexName" : "{{index_name}}",
      "skillsetName" : "{{index_name}}-skillset",
      "fieldMappings" : [
            {
              "sourceFieldName" : "metadata_storage_path",
              "targetFieldName" : "metadata_storage_path",
              "mappingFunction" : { "name" : "base64Encode" }
            },
            {
            	"sourceFieldName": "metadata_storage_name",
            	"targetFieldName": "metadata_storage_name"
            }
       ],
      "outputFieldMappings" : 
    	[
    		{
            	"sourceFieldName": "/document/merged_text",
            	"targetFieldName": "content"
            },
            {
                "sourceFieldName" : "/document/normalized_images/*/text",
                "targetFieldName" : "text"
            },
      		{
              "sourceFieldName" : "/document/organizations", 
              "targetFieldName" : "organizations"
            },
            {
            	"sourceFieldName": "/document/language",
            	"targetFieldName": "language"
            },
      		{
              "sourceFieldName" : "/document/persons", 
              "targetFieldName" : "persons"
            },
      		{
              "sourceFieldName" : "/document/locations", 
              "targetFieldName" : "locations"
            },
            {
              "sourceFieldName" : "/document/pages/*/keyPhrases/*", 
              "targetFieldName" : "keyPhrases"
            }
        ],
      "parameters":
      {
    	"batchSize": 1,
      	"maxFailedItems":-1,
      	"maxFailedItemsPerBatch":-1,
      	"configuration": 
    	{
        	"dataToExtract": "contentAndMetadata",
        	"imageAction": "generateNormalizedImages"
    	}
      }
    }
    
  3. Inviare la richiesta. Postman dovrebbe restituire un codice di stato 201 a conferma del corretto completamento dell'elaborazione.

    Il completamento di questa operazione può richiedere alcuni minuti. Anche se il set di dati è piccolo, le competenze analitiche prevedono un utilizzo elevato delle risorse di calcolo.

Nota

La creazione di un indicizzatore richiama la pipeline. Eventuali problemi a raggiungere i dati, per il mapping di input e output o nell'ordine delle operazioni vengono visualizzati in questa fase. Per eseguire di nuovo la pipeline con modifiche per codice o script, potrebbe essere necessario eliminare prima gli oggetti. Per altre informazioni, vedere Reimpostare ed eseguire di nuovo.

Informazioni sui parametri dell'indicizzatore

Lo script imposta "maxFailedItems" su -1, che indica al motore di indicizzazione di ignorare gli errori durante l'importazione dei dati. Questo comportamento è accettabile perché nell'origine dati demo sono presenti pochissimi documenti. Per un'origine dati più grande sarebbe necessario impostare un valore maggiore di 0.

L'istruzione "dataToExtract":"contentAndMetadata" indica all'indicizzatore di estrarre automaticamente il contenuto dai vari formati di file, oltre ai metadati correlati a ogni file.

Quando viene estratto il contenuto, è possibile impostare imageAction per estrarre il testo dalle immagini trovate nell'origine dati. La configurazione "imageAction":"generateNormalizedImages", unita alla competenza OCR e alla competenza di unione del testo, indica all'indicizzatore di estrarre il testo dalle immagini (ad esempio, la parola "stop" da un segnale stradale di stop) e incorporarlo come parte del campo del contenuto. Questo comportamento si applica sia alle immagini incorporate nei documenti, ad esempio un'immagine all'interno di un PDF, che alle immagini trovate nell'origine dati, ad esempio un file JPG.

4 - Monitorare l'indicizzazione

L'indicizzazione e l'arricchimento iniziano non appena si invia la richiesta Crea l'indicizzatore. A seconda delle competenze cognitive definite, l'indicizzazione può richiedere molto tempo.

Per scoprire se l'indicizzatore è ancora in esecuzione, chiamare Recupera stato indicizzatore per controllare lo stato dell'indicizzatore.

  1. Selezionare e quindi inviare la richiesta "Controlla lo stato dell'indicizzatore".

  2. Esaminare la risposta per sapere se l'indicizzatore è in esecuzione o per visualizzare le informazioni su errori e avvisi.

Gli avvisi sono comuni in alcuni scenari e non sempre indicano un problema. Se, ad esempio, un contenitore BLOB include file di immagine e la pipeline non gestisce le immagini, verrà visualizzato un avviso che informa che le immagini non sono state elaborate.

In questo esempio è presente un file PNG che non contiene testo. Tutte le cinque competenze basate sul testo (rilevamento del linguaggio, riconoscimento delle entità delle posizioni, organizzazioni, persone e estrazione di frasi chiave) non riescono a essere eseguite in questo file. La notifica risultante viene visualizzata nella cronologia di esecuzione.

Dopo aver creato un indice contenente contenuto generato dall'intelligenza artificiale, chiamare Documenti di ricerca per eseguire alcune query per visualizzare i risultati.

Ricordare che all'inizio è stato usato il contenuto del BLOB, in cui l'intero documento è incluso in un unico campo content. È possibile eseguire ricerche in questo campo per trovare corrispondenze alle query.

  1. Aprire la richiesta "Ricerca" ed eseguirla per ottenere la prima occhiata al contenuto dell'indice. Questa richiesta è una ricerca vuota ("search=*") in modo da restituire il contenuto per ognuno dei 14 documenti. Il parametro $select limita i risultati al nome del file, al nome della lingua e a una delle entità riconosciute.

     GET /indexes//{{index_name}}/docs?search=*&$select=metadata_storage_name,language,organizations&$count=true&api-version=2020-06-30
    
  2. Rivedere la query precedente per cercare "creazione di opportunità senza limiti". Questa frase è stata ottenuta tramite OCR di un file di immagine incorporato in un documento PDF. Includere "evidenzia" per applicare la formattazione sui termini corrispondenti nei campi popolati con densità.

     GET /indexes//{{index_name}}/docs?search=creating boundaryless opportunities&$select=content&highlight=content&$count=true&api-version=2020-06-30
    
  3. Per la query successiva, applicare un filtro. Tenere presente che il campo del linguaggio e tutti i campi di entità sono filtrabili.

     GET /indexes/{{index_name}}/docs?search=*&$filter=organizations/any(organizations: organizations eq 'NASDAQ')&$select=metadata_storage_name,organizations&$count=true&api-version=2020-06-30
    

Queste query illustrano alcuni dei modi in cui è possibile usare la sintassi e i filtri di query sui nuovi campi creati dalla ricerca cognitiva. Per altri esempi di query, vedere Esempi nell'API REST di ricerca documenti, Esempi di sintassi di query semplice ed Esempi di sintassi di query Lucene completa.

Reimpostare ed eseguire di nuovo

Durante le prime fasi di sviluppo, l'iterazione sulla progettazione è comune. È probabile che si eliminino e ricompilano spesso gli stessi oggetti.

Se si usa il portale per l'eliminazione ed eliminare prima l'indicizzatore, il portale richiederà di eliminare gli oggetti associati.

Delete search objects

In alternativa, è possibile usare DELETE e fornire URL a ogni oggetto. Il comando seguente elimina un indicizzatore.

DELETE https://[YOUR-SERVICE-NAME].search.windows.net/indexers/cog-search-demo-idxr?api-version=2020-06-30

In caso di corretto completamento dell'eliminazione viene restituito il codice di stato 204.

Risultati

Questa esercitazione illustra i passaggi di base per la compilazione di una pipeline di indicizzazione arricchita tramite la creazione delle parti componenti: un'origine dati, un set di competenze, un indice e un indicizzatore.

Sono state presentate le competenze predefinite, oltre alla definizione del set di competenze e ai meccanismi di concatenamento delle competenze tramite input e output. Si è inoltre appreso che outputFieldMappings nella definizione dell'indicizzatore è necessario per indirizzare i valori arricchiti dalla pipeline in un indice di ricerca in un servizio Ricerca cognitiva di Azure.

Infine, è stato descritto come testare i risultati e reimpostare il sistema per ulteriori iterazioni. Si è appreso che l'esecuzione di query sull'indice consente di restituire l'output creato dalla pipeline di indicizzazione arricchita.

Pulire le risorse

Quando si lavora nella propria sottoscrizione, alla fine di un progetto è opportuno rimuovere le risorse che non sono più necessarie. L'esecuzione continua delle risorse può avere un costo. È possibile eliminare le singole risorse oppure il gruppo di risorse per eliminare l'intero set di risorse.

Per trovare e gestire le risorse nel portale, usare il collegamento Tutte le risorse o Gruppi di risorse nel riquadro di spostamento a sinistra.

Passaggi successivi

Ora che si ha familiarità con tutti gli oggetti in una pipeline di arricchimento tramite intelligenza artificiale, verranno esaminate in dettaglio le definizioni dei set di competenze e le singole competenze.