Le code di indicizzazione di Google Cloud Search

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).

Panoramica dell'indicizzazione di Cloud Search
Figura 1. Passaggi di indicizzazione per aggiungere o aggiornare un elemento
  1. Il connettore di contenuti utilizza items.push per inserire metadati e hash in una coda.
    • Se il connettore include un push type o contentHash, 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.
  2. Il connettore utilizza items.poll per determinare gli elementi da indicizzare. Cloud Search restituisce gli elementi in ordine di priorità.
  3. Il connettore recupera gli elementi dal repository e crea richieste API di indicizzazione.
  4. Il connettore utilizza items.index per indicizzare gli elementi. Un elemento entra nello stato ACCEPTED dopo 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.

Panoramica dell'indicizzazione di Cloud Search
Figura 2. Eliminazione degli elementi
  1. Durante l'attraversamento iniziale, il connettore inserisce gli elementi nella "coda A" come NEW_ITEM. Ogni elemento riceve l'etichetta "A".
  2. Il connettore esegue il polling della coda A e indicizza gli elementi.
  3. 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.
  4. Il connettore esegue il polling della coda B e indicizza gli elementi.
  5. Infine, il connettore chiama deleteQueueItems nella coda A. Vengono eliminati tutti gli elementi precedentemente indicizzati che hanno ancora l'etichetta "A."
  6. 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)

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.