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

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 Indexing.
  4. Il connettore utilizza items.index per indicizzare gli elementi. Un elemento entra nello stato ACCEPTED dopo 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.

Panoramica dell'indicizzazione di Cloud Search
Figura 2. Eliminare 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. 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.
  4. Il connettore esegue il polling della coda B e indicizza gli elementi.
  5. Infine, il connettore chiama deleteQueueItems nella coda A. In questo modo vengono eliminati tutti gli elementi indicizzati in precedenza che hanno ancora l'etichetta "A".
  6. 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)

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.