Le code di indicizzazione di Google Cloud Search

Connector SDK e l'API Google Cloud Search consentono di creare Cloud Search Code di indicizzazione utilizzate per eseguire le seguenti attività:

  • Mantenere lo stato di ogni documento (stato, valori hash e così via), che può essere per mantenere sincronizzato l'indice con il repository.

  • Mantieni un elenco di elementi da indicizzare come rilevati durante l'attraversamento e il processo di sviluppo.

  • Assegna una priorità agli elementi in coda in base allo stato degli articoli.

  • Mantenere ulteriori informazioni sullo stato per un'integrazione efficiente, ad esempio checkpoint, modifiche al token e così via.

Una coda è un'etichetta assegnata a un elemento indicizzato, ad esempio "predefinito" per coda predefinita o "B" per la coda B.

Stato e priorità

La priorità di un documento in una coda si basa sul suo ItemStatus le API nel tuo codice. Di seguito sono riportate le possibili ItemStatus codici in ordine di priorità (gestiti dal primo all'ultimo):

  • ERROR - Si è verificato un errore asincrono nell'elemento durante l'indicizzazione processo e deve essere reindicizzata.

  • MODIFIED - Elemento che è stato indicizzato in precedenza e successivamente modificato in nel repository dall'ultima indicizzazione.

  • NEW_ITEM: elemento non indicizzato.

  • ACCEPTED - Documento che è stato indicizzato in precedenza e che non è stato modificato nel repository dall'ultima indicizzazione.

Quando due elementi in una coda hanno lo stesso stato, viene data una priorità più elevata al elementi in coda da più tempo.

Panoramica dell'utilizzo delle code di indicizzazione per indicizzare un elemento nuovo o modificato

La figura 1 mostra i passaggi per l'indicizzazione di un elemento nuovo o modificato utilizzando un in coda. Questi passaggi mostrano le chiamate API REST. Per le chiamate SDK equivalenti, consulta Operazioni sulle code (SDK Connector).

Panoramica dell'indicizzazione di Google Cloud Search
Figura 1. Procedura di indicizzazione per aggiungere o aggiornare un elemento
.
    .
  1. Il connettore di contenuti utilizza items.push inviare elementi (metadati e hash) a una coda di indicizzazione per stabilire (MODIFIED, NEW_ITEM, DELETED). Nello specifico:

    • Quando esegui il push, il connettore include esplicitamente un push type o contentHash.
    • Se il connettore non include type, Cloud Search utilizza automaticamente il contentHash per determinare lo stato dell'articolo.
    • Se l'elemento è sconosciuto, lo stato dell'articolo è impostato su NEW_ITEM.
    • Se l'articolo esiste e i valori hash corrispondono, lo stato viene mantenuto su ACCEPTED.
    • Se l'elemento esiste e gli hash sono diversi, lo stato diventa MODIFIED.

    Per ulteriori informazioni su come viene stabilito lo stato degli articoli, consulta le Attraversare i repository GitHub di codice campione Tutorial introduttivo su Cloud Search.

    Di solito, il push è associato al trasferimento dei contenuti e/o al rilevamento delle modifiche i processi nel connettore.

  2. Il connettore di contenuti utilizza items.poll eseguire il polling della coda per determinare gli elementi da indicizzare. Cloud Search comunica al connettore quali elementi hanno più bisogno di indicizzazione, ordinati prima per codice di stato e poi in base al tempo in coda.

  3. Il connettore recupera questi elementi dal repository e crea un indice richieste API.

  4. Il connettore utilizza items.index per indicizzare gli elementi. L'elemento entra nello stato ACCEPTED solo dopo Cloud Search termina l'elaborazione dell'elemento.

Un connettore può anche eliminare un elemento se non esiste più nel repository, o esegui di nuovo il push di un elemento se non è stato modificato o se è presente del repository di codice sorgente. Per informazioni sull'eliminazione degli articoli, consulta la .

Panoramica dell'utilizzo delle code di indicizzazione per eliminare un elemento

La strategia full-traversal usa un processo a due code per indicizzare gli elementi e rilevare le eliminazioni. La figura 2 mostra la procedura per eliminare un elemento utilizzando due di indicizzazione in base alle code. Nello specifico, la figura 2 mostra il secondo attraversamento eseguito usando una strategia di attraversamento completo. In questi passaggi vengono usate le chiamate API REST. Per per chiamate SDK equivalenti, consulta Operazioni sulle code (SDK del connettore).

Panoramica dell'indicizzazione di Google Cloud Search
Figura 2. Eliminazione di elementi
.
  1. Durante l'attraversamento iniziale, il connettore di contenuti utilizza items.push per eseguire il push di elementi (metadati e hash) in una coda di indicizzazione, "coda A" come NEW_ITEM perché non esiste in coda. A ogni elemento viene assegnata l'etichetta "A" per la "coda A". I contenuti sono indicizzati in Cloud Search.

  2. Il connettore di contenuti utilizza items.poll eseguire il polling della coda A per determinare gli elementi da indicizzare. Cloud Search comunica al connettore quali elementi hanno più bisogno di indicizzazione, ordinati prima per codice di stato e poi in base al tempo in coda.

  3. Il connettore recupera questi elementi dal repository e crea un indice richieste API.

  4. Il connettore utilizza items.index per indicizzare gli elementi. L'elemento entra nello stato ACCEPTED solo dopo Cloud Search termina l'elaborazione dell'elemento.

  5. La deleteQueueItems è chiamato "coda B". Tuttavia, nessun elemento è stato inviato alla coda B, quindi non è possibile eliminare nulla.

  6. Nel secondo attraversamento completo, il connettore dei contenuti utilizza items.push per eseguire il push degli elementi (metadati e hash) nella coda B:

    • Quando esegui il push, il connettore include esplicitamente un push type o contentHash.
    • Se il connettore non include type, Cloud Search utilizza automaticamente il contentHash per determinare lo stato dell'articolo.
    • Se l'elemento è sconosciuto, lo stato dell'elemento è impostato su NEW_ITEM e la coda l'etichetta è stata modificata in "B".
    • Se l'articolo esiste e i valori hash corrispondono, lo stato viene mantenuto su ACCEPTED. e l'etichetta della coda diventa "B".
    • Se l'elemento esiste e gli hash sono diversi, lo stato diventa MODIFIED e la coda l'etichetta è stata modificata in "B".
  7. Il connettore di contenuti utilizza items.poll eseguire il polling della coda per determinare gli elementi da indicizzare. Cloud Search comunica al connettore quali elementi hanno più bisogno di indicizzazione, ordinati prima per codice di stato e poi in base al tempo in coda.

  8. Il connettore recupera questi elementi dal repository e crea un indice richieste API.

  9. Il connettore utilizza items.index per indicizzare gli elementi. L'elemento entra nello stato ACCEPTED solo dopo Cloud Search termina l'elaborazione dell'elemento.

  10. Infine, deleteQueueItems viene richiamato nella coda A per eliminare tutti gli elementi di CCloud Search indicizzati in precedenza hanno ancora la coda "A" dell'etichetta.

  11. Con attraversamenti completi successivi, la coda utilizzata per l'indicizzazione mentre la coda usata per l'eliminazione viene scambiata.

Operazioni in coda (SDK Connector)

L'SDK Content Connector fornisce le operazioni per il push degli elementi e il pull elementi da una coda.

Per pacchettizzare un elemento ed eseguirne il push in una coda, utilizza pushItems Builder.

Non devi fare nulla di specifico per estrarre elementi da una coda e l'elaborazione dei dati. L'SDK estrae automaticamente gli elementi dalla coda, in ordine di priorità. utilizzando Classi Repository getDoc: .

Operazioni sulla coda (API REST)

L'API REST fornisce i due metodi seguenti per eseguire il push di elementi a estrarre elementi da una coda:

  • Per eseguire il push di un elemento in una coda, utilizza Items.push.
  • Per eseguire un sondaggio tra gli elementi in coda, utilizza Items.poll.

Puoi anche utilizzare Items.index per inserire elementi in coda durante l'indicizzazione. Elementi inviati in coda durante l'indicizzazione non richiede type e viene assegnato automaticamente allo stato ACCEPTED.

Items.push

La Items.push aggiunge ID alla coda. Questo metodo può essere chiamato con un modello type che determina il risultato di un'operazione di push. Per un elenco dei valori di type, consulta alla Campo item.type in Items.push .

Il push di un nuovo ID comporta l'aggiunta di una nuova voce con un NEW_ITEM ItemStatus le API nel tuo codice.

Il payload facoltativo viene sempre archiviato, trattato come un valore opaco e restituito da Items.poll

Quando un elemento viene sottoposto a polling, viene prenotato, ovvero non può essere restituito un'altra chiamata a Items.poll Utilizzo Items.push con type come NOT_MODIFIED, REPOSITORY_ERROR o REQUEUE, annulla prenotazioni voci sottoposte a polling. Per ulteriori informazioni sulle voci prenotate e non prenotate: consulta la sezione Items.poll.

Items.push con hash

L'API Google Cloud Search supporta la specifica di metadati e valori hash dei contenuti. attivo Items.index richieste. Invece di specificare type, i metadati e/o i valori hash dei contenuti può essere specificato con una richiesta push. La coda di indicizzazione di Cloud Search confronta i valori hash forniti con i valori memorizzati disponibili con l'elemento nella origine dati. In caso di mancata corrispondenza, la voce viene contrassegnata come MODIFIED. Se viene restituito elemento non esiste nell'indice, lo stato è NEW_ITEM.

Items.poll

Items.poll recupera le voci con priorità più alta dalla coda. Le API richieste e i valori di stato restituiti indicano gli stati del code richieste di priorità o lo stato degli ID restituiti.

Per impostazione predefinita, possono essere restituite le voci di qualsiasi sezione della coda, in base a la priorità. Ogni voce restituita è prenotata e non viene restituita da altri chiamate a Items.poll fino a quando non si verifica uno dei seguenti casi:

  • La prenotazione scade.
  • La voce è stata nuovamente accodata da Items.index.
  • Items.push viene chiamato type valore di NOT_MODIFIED, REPOSITORY_ERROR o REQUEUE.