5

In un CMS, un elenco di clienti viene recuperato utilizzando una normale query NDB con l'ordine. Per consentire il filtraggio su nome, nome dell'azienda ed e-mail, creo diversi (a volte molti) indici. La situazione non era ideale, ma praticabile.Utilizzare Datastore (NDB), l'API di ricerca o entrambi per le viste sui dati?

Ora c'è il (sperimentale) Search API. Sembra non avere alcuna relazione con il datastore (o NDB), ma i miei dati sono già lì.

Mi piacerebbe utilizzare la ricerca di testo completo e inserire filtri su più campi contemporaneamente, quindi dovrei conservare i miei dati nell'archivio dati e duplicare parti dei dati in Documenti per l'API di ricerca? Oppure, come search example suggests, ignora completamente il Datastore.

risposta

6

Non sono sicuro di quale sia il metodo consigliato per la sua implementazione, ma l'API di ricerca sembra progettata per essere utilizzata principalmente come indice aggiuntivo gestito manualmente. Non è l'ideale nella maggior parte delle situazioni per archiviare tutti i tuoi dati nell'API di ricerca, poiché puoi facilmente eliminare la dimensione degli indici API di ricerca con campi che non hai mai bisogno di filtrare o cercare, né è ben progettato per essere utilizzato in situazione in cui sono necessarie scritture regolari.

Il mio consiglio personale è di lasciare tutti i dati in NDB e progettare classi per creare documenti contenenti i dati ricercabili rilevanti utilizzando l'API di ricerca, mantenendo la coerenza tra i due media aggiornando la versione dell'API di ricerca ogni volta che una scrittura è fatto per la versione del datastore (o usando tasks/crons o un sistema simile se stai scrivendo molti dati). È necessario archiviare tutti i dati presenti nell'interfaccia utente durante il filtraggio nei documenti dell'API di ricerca per i dati correlati, poiché la registrazione manuale dei risultati dell'API di ricerca e dei dati del datastore è inutilmente intensiva e rallenterà gravemente l'intero processo.

+0

Grazie. Questo è un approccio molto pratico e utile al problema. – kvdb