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 sincronizzato l'indice.
- Mantenere un elenco di elementi da indicizzare, come rilevato durante l'attraversamento.
- Assegnare la priorità agli elementi in base al loro stato.
- Mantenere 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 codici possibili, in ordine di priorità (da quella più alta a quella più bassa), sono:
ERROR: l'elemento ha riscontrato un errore asincrono e deve essere reindicizzato.MODIFIED: l'elemento è stato indicizzato in precedenza, ma è stato modificato nel repository.NEW_ITEM: l'elemento non è ancora indicizzato.ACCEPTED: l'elemento è stato indicizzato in precedenza e non è stato modificato.
Per gli elementi con lo stesso stato, la priorità più alta va a quelli che sono nella 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 con le code (SDK Connector).
- 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 Indexing.
- Il connettore utilizza
items.indexper indicizzare gli elementi. Un elemento entra nello statoACCEPTEDdopo l'elaborazione riuscita.
Eliminare un elemento
La strategia di attraversamento completo utilizza due code per indicizzare gli elementi e rilevare le eliminazioni. La Figura 2 mostra il secondo attraversamento 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.
- Durante il secondo attraversamento completo, il connettore inserisce gli elementi nella "coda B".
- Gli elementi sconosciuti ricevono l'etichetta "B" e lo stato
NEW_ITEM. - Gli elementi esistenti con hash corrispondenti cambiano l'etichetta in "B" e rimangono
ACCEPTED. - Gli elementi esistenti con hash diversi cambiano l'etichetta in "B" e diventano
MODIFIED.
- Gli elementi 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. In questo modo vengono eliminati tutti gli elementi indicizzati in precedenza che hanno ancora l'etichetta "A". - Gli attraversamenti successivi scambiano i ruoli delle due code.
Operazioni con le code (SDK Connector)
Utilizza il
pushItems
builder per inserire gli elementi. L'SDK estrae automaticamente gli elementi dalla coda in
ordine di priorità utilizzando il metodo
getDoc
della classe Repository.
Operazioni con le code (API REST)
- Per eseguire il push: utilizza
Items.push. - Per eseguire il polling: utilizza
Items.poll.
Puoi anche utilizzare
Items.index
per inserire gli elementi durante l'indicizzazione. Questi elementi ricevono automaticamente lo stato ACCEPTED.
Items.push
Questo metodo aggiunge ID alla coda. Il
type
determina il risultato. L'inserimento 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 di metadati o contenuti nella richiesta di push.
Cloud Search li confronta con i valori archiviati. Se non corrispondono, la voce diventa MODIFIED. Gli ID non corrispondenti che non esistono diventano NEW_ITEM.
Items.poll
Questo metodo recupera le voci ad alta priorità. Ogni voce restituita viene riservata fino al timeout, alla reindicizzazione o all'annullamento della prenotazione tramite Items.push.