Pianificare un indicizzatore in Ricerca di intelligenza artificiale di Azure

Gli indicizzatori possono essere configurati per l'esecuzione in base a una pianificazione quando si imposta la schedule proprietà . Alcune situazioni in cui la pianificazione dell'indicizzatore è utile includono:

  • I dati di origine cambiano nel tempo e si vuole che l'indicizzatore elabori automaticamente la differenza.
  • I dati di origine sono molto grandi ed è necessaria una pianificazione ricorrente per indicizzare tutto il contenuto.
  • Un indice viene popolato da più origini, usando più indicizzatori e si vuole sfalsare i processi per ridurre i conflitti.

Quando l'indicizzazione non può essere completata all'interno della tipica finestra di elaborazione di 2 ore, è possibile pianificare l'esecuzione dell'indicizzatore su una frequenza di 2 ore per l'utilizzo di un volume elevato di dati. Se l'origine dati supporta la logica di rilevamento delle modifiche, gli indicizzatori possono selezionare automaticamente la posizione in cui sono stati interrotti in ogni esecuzione.

Quando un indicizzatore è in base a una pianificazione, rimane in base alla pianificazione fino a quando non si cancella l'intervallo o l'ora di inizio oppure si imposta su disabled true. Lasciare l'indicizzatore in base a una pianificazione quando non c'è nulla da elaborare non influirà sulle prestazioni del sistema. Il controllo del contenuto modificato è un'operazione relativamente veloce.

Prerequisiti

  • Indicizzatore valido configurato con un'origine dati e un indice.

  • Rilevamento delle modifiche nell'origine dati. Archiviazione di Azure e SharePoint hanno il rilevamento delle modifiche predefinito. È necessario abilitare manualmente altre origini dati, ad esempio SQL di Azure e Azure Cosmos DB .

Definizione pianificazione

Una pianificazione fa parte della definizione dell'indicizzatore. Se la schedule proprietà viene omessa, l'indicizzatore verrà eseguito solo su richiesta. La proprietà ha due parti.

Proprietà Descrizione
"interval" (obbligatorio) Intervallo di tempo tra l'inizio di due esecuzioni consecutive dell'indicizzatore. L'intervallo più piccolo consentito è di 5 minuti e il più lungo è 1440 minuti (24 ore). Il valore deve essere formattato come valore XSD "dayTimeDuration" (un subset limitato di un valore duration ISO 8601 ).

Il modello per questo è: P(nD)(T(nH)(nM)).

Esempi: PT15M per ogni 15 minuti, PT2H per ogni due ore.
"startTime" (facoltativo) L'ora di inizio viene specificata nell'ora UTC (Coordinated Universal Time). Se omesso, viene utilizzata l'ora corrente. Questa volta può essere passato, nel qual caso la prima esecuzione è pianificata come se l'indicizzatore fosse in esecuzione continuamente dall'ora di inizio originale.

L'esempio seguente è una pianificazione che inizia il 1° gennaio a mezzanotte e viene eseguita ogni due ore.

{
    "dataSourceName" : "hotels-ds",
    "targetIndexName" : "hotels-idx",
    "schedule" : { "interval" : "PT2H", "startTime" : "2024-01-01T00:00:00Z" }
}

Configurare una pianificazione

Le pianificazioni vengono specificate in una definizione dell'indicizzatore. Per configurare una pianificazione, è possibile usare portale di Azure, API REST o Azure SDK.

  1. Accedere al portale di Azure e aprire la pagina del servizio di ricerca.
  2. Nel riquadro di spostamento sinistro selezionare Indicizzatori.
  3. Aprire un indicizzatore.
  4. Seleziona Impostazioni.
  5. Scorrere verso il basso fino a Pianificazione, quindi scegliere Oraria, Giornaliera o Personalizzata per impostare una data, un'ora o un intervallo personalizzato specifico.

Passare alla scheda Indexer Definition (JSON) nella parte superiore dell'indice per visualizzare la definizione di pianificazione in formato XSD.

Comportamento di pianificazione

Per l'indicizzazione basata su testo, l'utilità di pianificazione può avviare tutti i processi dell'indicizzatore supportati dal servizio di ricerca, determinato dal numero di unità di ricerca. Ad esempio, se il servizio ha tre repliche e quattro partizioni, è possibile avere 12 processi indicizzatore in esecuzione attiva, sia avviati su richiesta che in base a una pianificazione.

Gli indicizzatori basati sulle competenze vengono eseguiti in un ambiente di esecuzione diverso. Per questo motivo, il numero di unità di servizio non influisce sul numero di processi indicizzatore basati sulle competenze che è possibile eseguire. Più indicizzatori basati su competenze possono essere eseguiti in parallelo, ma ciò dipende dalla disponibilità dei nodi all'interno dell'ambiente di esecuzione.

Anche se più indicizzatori possono essere eseguiti contemporaneamente, un indicizzatore specificato è una singola istanza. Non è possibile eseguire due copie dello stesso indicizzatore contemporaneamente. Se un indicizzatore continua a essere in esecuzione quando l'esecuzione pianificata successiva è impostata per l'avvio, l'esecuzione in sospeso viene posticipata fino alla successiva occorrenza pianificata, consentendo il completamento del processo corrente.

Ecco un esempio per rendere il discorso più concreto. Si supponga di configurare una pianificazione dell'indicizzatore con un intervallo orario e un'ora di inizio del 1° gennaio 2024 alle 8.00.00 UTC. Ecco cosa può accadere quando un'esecuzione dell'indicizzatore richiede più di un'ora:

  • La prima esecuzione dell'indicizzatore inizia il 1° gennaio 2024 alle 8:00 UTC. Si supponga che l'esecuzione richiede 20 minuti (o qualsiasi quantità di tempo inferiore a 1 ora).

  • La seconda esecuzione inizia il 1° gennaio 2022 alle 9:00 UTC. Si supponga che l'esecuzione richiede 70 minuti, più di un'ora, e non verrà completata fino alle 10:10 UTC.

  • La terza esecuzione è pianificata per l'avvio alle 10:00 UTC, ma in quel momento l'esecuzione precedente è ancora in esecuzione. Questa esecuzione pianificata viene quindi ignorata. L'esecuzione successiva dell'indicizzatore non verrà avviata fino alle 11:00 UTC.

Nota

Se un indicizzatore è impostato su una determinata pianificazione ma si verifica ripetutamente un errore nello stesso documento ogni volta, l'indicizzatore inizierà a essere eseguito su un intervallo meno frequente (fino all'intervallo massimo di almeno una volta ogni 2 ore o 24 ore, a seconda di diversi fattori di implementazione) fino a quando non viene nuovamente eseguito correttamente. Se si ritiene di aver risolto il problema sottostante, è possibile eseguire manualmente l'indicizzatore e, se l'indicizzazione riesce, l'indicizzatore tornerà alla pianificazione regolare.

Passaggi successivi

Per gli indicizzatori eseguiti in base a una pianificazione, è possibile monitorare le operazioni recuperando lo stato dal servizio di ricerca o ottenere informazioni dettagliate abilitando la registrazione delle risorse.