Uno schema di Google Cloud Search è una struttura JSON che definisce oggetti, proprietà e opzioni per l'indicizzazione e l'esecuzione di query sui dati. Il connettore di contenuti utilizza lo schema registrato per strutturare e indicizzare i dati del repository.
Per creare uno schema, fornisci un oggetto schema JSON all'API. Prima di indicizzare i dati, devi registrare uno schema per ogni repository.
Questo documento illustra le nozioni di base per la creazione di schemi. Per ottimizzare l'esperienza di ricerca, consulta Migliorare la qualità della ricerca.
Crea uno schema
Per creare lo schema di Cloud Search:
- Identifica il comportamento previsto degli utenti
- Inizializza un'origine dati
- Definisci gli oggetti
- Definisci le proprietà degli oggetti
- Registra lo schema
- Indicizza i dati
- Testa lo schema
- Ottimizza lo schema
Identifica il comportamento previsto degli utenti
Anticipare il modo in cui gli utenti eseguono le ricerche aiuta a definire la strategia dello schema. Per un database di film, gli utenti potrebbero cercare "film con Robert Redford". Lo schema deve supportare le query per i film con un attore specifico.
Per allineare lo schema al comportamento degli utenti:
- Valuta diverse query di utenti diversi.
- Identifica i set di dati logici o gli oggetti, ad esempio un "film".
- Identifica le proprietà (attributi) come il titolo o la data di uscita.
- Identifica i valori validi per le proprietà, ad esempio "I predatori dell'arca perduta".
- Determina le esigenze di ordinamento e classificazione, ad esempio l'ordine cronologico o le valutazioni del pubblico.
- Identifica le proprietà di contesto, ad esempio il ruolo lavorativo, per migliorare i suggerimenti di completamento automatico.
- Elenca questi oggetti, proprietà e valori di esempio. Utilizza questo elenco per definire le opzioni dell'operatore.
Inizializza l'origine dati
Un' origine dati rappresenta i dati del repository indicizzati archiviati in Google Cloud. Consulta Gestire le origini dati di terze parti. Quando un utente fa clic su un risultato, Cloud Search lo indirizza all'elemento utilizzando l'URL della richiesta di indicizzazione.
Definisci gli oggetti
L' oggetto è l'unità fondamentale di uno schema. Le strutture logiche come "film" o "persona" sono oggetti. Ogni oggetto ha proprietà come titolo, durata o nome.
Uno schema è un elenco di
definizioni di oggetti nel tag objectDefinitions.
{
"objectDefinitions": [
{ "name": "movie" },
{ "name": "person" }
]
}
Utilizza nomi univoci per ogni oggetto, ad esempio movie. Il servizio di schema utilizza questi nomi come chiavi. Consulta
ObjectDefinition.
Definisci le proprietà degli oggetti
Definisci le proprietà, come il titolo e la data di uscita, nella sezione propertyDefinitions. Utilizza
options
per
freshnessOptions
(classificazione) e
displayOptions
(etichette dell'interfaccia utente).
{
"objectDefinitions": [{
"name": "movie",
"propertyDefinitions": [
{
"name": "movieTitle",
"isReturnable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": { "operatorName": "title" }
},
"displayOptions": { "displayLabel": "Title" }
},
{
"name": "releaseDate",
"isReturnable": true,
"isSortable": true,
"datePropertyOptions": {
"operatorOptions": {
"operatorName": "released",
"lessThanOperatorName": "releasedbefore",
"greaterThanOperatorName": "releasedafter"
}
}
}
]
}]
}
Una PropertyDefinition include:
- Una stringa
name. - Opzioni indipendenti dal tipo (ad es.
isReturnable). - Un tipo e opzioni specifiche del tipo (ad es.
textPropertyOptions). operatorOptionsper gli operatori di ricerca.displayOptionsper le etichette dell'interfaccia utente.
Puoi riutilizzare i nomi delle proprietà in oggetti diversi. Ad esempio, movieTitle
può essere visualizzato sia in un oggetto movie sia nella filmografia di un oggetto person.
Aggiungi opzioni indipendenti dal tipo
PropertyDefinition
include opzioni booleane per configurare la funzionalità di ricerca per una proprietà,
indipendentemente dal tipo. Per impostazione predefinita, queste opzioni sono impostate su false e devono essere impostate su true per essere utilizzate.
isReturnable: imposta sutruese i dati della proprietà devono essere restituiti nei risultati di ricerca utilizzando l'API Query. Le proprietà non restituibili possono essere utilizzate per la ricerca o la classificazione senza essere visualizzate nei risultati.isRepeatable: imposta sutruese la proprietà può avere più valori. Ad esempio, un film ha una data di uscita, ma più attori.isSortable: imposta sutruese la proprietà può essere utilizzata per l'ordinamento. Non può esseretrueseisRepeatableètrueo se la proprietà si trova all'interno di un sotto-oggetto ripetibile.isFacetable: imposta sutruese la proprietà può essere utilizzata per generare sfaccettature (attributi utilizzati per perfezionare i risultati di ricerca).- Richiede che
isReturnablesiatrue. - Supportato solo per le proprietà enum, booleane e di testo.
- Richiede che
isWildcardSearchable: imposta sutrueper consentire agli utenti di eseguire ricerche con caratteri jolly su questa proprietà. Questa opzione è disponibile solo per le proprietà di testo e il suo comportamento dipende dall'impostazioneexactMatchWithOperator:- Se
exactMatchWithOperatorètrue: il valore di testo viene trattato come un singolo token. Una query comescience-*corrisponde al valorescience-fiction. - Se
exactMatchWithOperatorèfalse: il valore di testo viene suddiviso in token. Una query comesci*ofi*corrisponde ascience-fiction, mascience-*no.
- Se
Definisci il tipo
Imposta il tipo di dati definendo l'oggetto delle opzioni della proprietà appropriato (ad es. textPropertyOptions). Utilizza le enumerazioni (enumPropertyOptions) se conosci tutti i valori possibili. Una proprietà può avere un solo tipo di dati.
Definisci le opzioni dell'operatore
operatorOptions descrive il funzionamento di una proprietà come operatore di ricerca.
Ogni operatorOptions richiede un operatorName (ad es. title). Questo è il
parametro che gli utenti digitano nelle query (ad es. title:titanic). Utilizza nomi intuitivi
ed esponili agli utenti.
Puoi condividere un operatorName tra le proprietà dello stesso tipo. Le query che utilizzano questo nome recuperano i risultati da tutte le proprietà corrispondenti.
Le proprietà ordinabili possono includere lessThanOperatorName e greaterThanOperatorName per le query di confronto. Le proprietà di testo possono utilizzare exactMatchWithOperator per trattare l'intero valore come un singolo token.
Aggiungi opzioni di visualizzazione
La sezione facoltativa displayOptions contiene un displayLabel. Si tratta di un'etichetta intuitiva visualizzata nei risultati di ricerca.
Aggiungi operatori di filtro dei suggerimenti
Utilizza suggestionFilteringOperators[] per definire una proprietà che filtra i suggerimenti di completamento automatico (ad es. filtrare i suggerimenti di film in base al genere preferito di un utente). Puoi definire un solo filtro di suggerimenti.
Registra lo schema
Registra lo schema con il servizio di schema utilizzando l'ID dell'origine dati. Emetti una UpdateSchema UpdateSchema:
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
Utilizza validateOnly: true per testare lo schema senza registrarlo.
Indicizza i dati
Dopo la registrazione, popola l'origine dati utilizzando Index chiamate, in genere con un connettore.
Esempio di richiesta di indicizzazione:
{
"name": "datasource/<data_source_id>/items/titanic",
"metadata": {
"title": "Titanic",
"objectType": "movie"
},
"structuredData": {
"object": {
"properties": [{
"name": "movieTitle",
"textValues": { "values": ["Titanic"] }
}]
}
},
"itemType": "CONTENT_ITEM"
}
Testa lo schema
Esegui il test con un repository di piccole dimensioni prima della produzione. Crea un elenco di controllo dell'accesso che limiti i risultati a un utente di test.
- Query generica: cerca una stringa (ad es. "titanic") per visualizzare tutti gli elementi corrispondenti.
- Query dell'operatore: utilizza un operatore (ad es.
actor:Zane) per limitare i risultati.
Ottimizza lo schema
Monitora il feedback degli utenti e modifica lo schema. Potresti indicizzare nuovi campi o rinominare gli operatori per renderli più intuitivi.
Esegui di nuovo l'indicizzazione dopo una modifica dello schema
Non è necessario eseguire di nuovo l'indicizzazione per le modifiche a:
- Nomi degli operatori.
- Limiti numerici.
- Classificazione ordinata.
- Opzioni di aggiornamento o visualizzazione.
Devi eseguire di nuovo l'indicizzazione per:
- Aggiungere o rimuovere proprietà o oggetti.
- Impostare
isReturnable,isFacetableoisSortablesutrue. - Contrassegnare una proprietà come
isSuggestable.
Modifiche delle proprietà non consentite
Le modifiche che interrompono l'indice o causano risultati incoerenti non sono consentite, tra cui:
- Tipo di dati o nome della proprietà.
- Impostazioni
exactMatchWithOperatororetrievalImportance.
Apporta una modifica complessa allo schema
Per apportare una modifica non consentita, esegui la migrazione delle proprietà da una vecchia definizione a una nuova:
- Aggiungi una nuova proprietà con un nome diverso allo schema.
- Registra lo schema con le proprietà nuove e quelle precedenti.
- Esegui il backfill dell'indice utilizzando solo la nuova proprietà.
- Elimina la vecchia proprietà dallo schema.
- Aggiorna il codice della query in modo che utilizzi il nuovo nome della proprietà.
Cloud Search registra gli elementi eliminati per 30 giorni per evitare problemi di riutilizzo.
Limitazioni delle dimensioni
- Massimo 10 oggetti di primo livello.
- Profondità massima di 10 livelli.
- Massimo 1000 campi per oggetto (inclusi i campi nidificati).
Passaggi successivi
- Crea un'interfaccia di ricerca.
- Migliora la qualità della ricerca.
- Struttura uno schema per un'interpretazione ottimale delle query.
- Definisci i sinonimi.