L'SDK Connector e l'API Cloud Search supportano la creazione di code di indicizzazione di Cloud Search. Utilizza queste code per:
- Mantenere lo stato per documento (stato, hash e così via) per mantenere l'indice sincronizzato.
- Mantiene un elenco di elementi da indicizzare, come rilevato durante l'attraversamento.
- Dai la priorità agli elementi in base al loro stato.
- Mantieni le informazioni sullo stato, come i checkpoint e i token di modifica.
Una coda è un'etichetta assegnata a un elemento indicizzato (ad es. "default").
Stato e priorità
La priorità di un documento dipende dal suo
ItemStatus
codice. I possibili codici, in ordine di priorità (dalla più alta alla più bassa), sono:
ERROR: l'elemento ha riscontrato un errore asincrono e deve essere reindicizzato.MODIFIED: L'elemento è stato indicizzato in precedenza, ma è cambiato nel repository.NEW_ITEM: L'articolo non è ancora stato indicizzato.ACCEPTED: l'elemento è stato indicizzato in precedenza e non è stato modificato.
Per gli elementi con lo stesso stato, la priorità più alta viene assegnata a quelli che si trovano in coda da più tempo.
Indicizzare un elemento nuovo o modificato
La figura 1 mostra i passaggi per indicizzare un elemento nuovo o modificato utilizzando una coda di indicizzazione. Questi passaggi riflettono le chiamate API REST; per gli equivalenti SDK, consulta Operazioni di coda (SDK connettore).
- Il connettore di contenuti utilizza
items.pushper inserire metadati e hash in una coda.- Se il connettore include un push
typeocontentHash, Cloud Search determina lo stato. - Gli elementi sconosciuti ricevono lo stato
NEW_ITEM. - Gli elementi esistenti con hash corrispondenti rimangono
ACCEPTED. - Gli elementi esistenti con hash diversi diventano
MODIFIED.
- Se il connettore include un push
- Il connettore utilizza
items.pollper determinare gli elementi da indicizzare. Cloud Search restituisce gli elementi in ordine di priorità. - Il connettore recupera gli elementi dal repository e crea richieste API di indicizzazione.
- Il connettore utilizza
items.indexper indicizzare gli elementi. Un elemento entra nello statoACCEPTEDdopo l'elaborazione riuscita.
Eliminazione di un elemento
La strategia di attraversamento completo utilizza due code per indicizzare gli elementi e rilevare le eliminazioni. La Figura 2 mostra la seconda traversata in questa strategia.
- Durante l'attraversamento iniziale, il connettore inserisce gli elementi nella "coda A" come
NEW_ITEM. Ogni elemento riceve l'etichetta "A". - Il connettore esegue il polling della coda A e indicizza gli elementi.
- Nel secondo attraversamento completo, il connettore inserisce gli elementi nella "coda B".
- Gli articoli sconosciuti ricevono l'etichetta "B" e lo stato
NEW_ITEM. - Gli elementi esistenti con hash corrispondenti cambiano etichetta in "B" e rimangono
ACCEPTED. - Gli elementi esistenti con hash diversi cambiano etichetta in "B" e
diventano
MODIFIED.
- Gli articoli sconosciuti ricevono l'etichetta "B" e lo stato
- Il connettore esegue il polling della coda B e indicizza gli elementi.
- Infine, il connettore chiama
deleteQueueItemsnella coda A. Vengono eliminati tutti gli elementi precedentemente indicizzati che hanno ancora l'etichetta "A." - I passaggi successivi scambiano i ruoli delle due code.
Operazioni di coda (SDK Connector)
Utilizza il
generatore pushItems
per eseguire il push degli elementi. L'SDK estrae automaticamente gli elementi dalla coda in
ordine di priorità utilizzando il metodo
getDoc
della classe Repository.
Operazioni di coda (API REST)
- Per spingere, utilizza
Items.push. - Per eseguire il polling, utilizza
Items.poll.
Puoi anche utilizzare
Items.index
per eseguire il push degli elementi durante l'indicizzazione. Questi elementi ricevono automaticamente lo stato ACCEPTED.
Items.push
Questo metodo aggiunge gli ID alla coda. Il
type
determina il risultato. Il push di un nuovo ID aggiunge una voce con lo stato NEW_ITEM.
Il payload facoltativo viene restituito durante il polling.
Gli elementi sottoposti a polling sono riservati e non possono essere restituiti da altre chiamate di polling. L'utilizzo di
Items.push con type impostato su NOT_MODIFIED, REPOSITORY_ERROR o
REQUEUE annulla la prenotazione delle voci.
Items.push con hash
Specifica gli hash dei metadati o dei contenuti nella richiesta push.
Cloud Search li confronta con i valori memorizzati. Se non corrispondono,
la voce diventa MODIFIED. Gli ID non corrispondenti che non esistono diventano
NEW_ITEM.
Items.poll
Questo metodo recupera le voci con priorità alta. Ogni voce restituita viene riservata
fino alla scadenza del timeout, alla reindicizzazione o alla rimozione della prenotazione tramite Items.push.