Uno schema di Google Cloud Search è una struttura JSON che definisce oggetti, proprietà e opzioni da usare per l'indicizzazione e l'esecuzione di query sui dati. Il connettore di contenuti legge i dati dal repository e, in base alle schema registrato, struttura e indicizza i dati.
Puoi creare uno schema fornendo all'API un oggetto schema JSON per poi registrarlo. Devi registrare un oggetto schema per ognuno dei tuoi repository prima di poter indicizzare i dati.
Questo documento illustra le nozioni di base della creazione di schemi. Per informazioni su come per ottimizzare lo schema e migliorare l'esperienza di ricerca, consulta Migliorare la qualità della ricerca.
Crea uno schema
Di seguito è riportato un elenco dei passaggi utilizzati per creare lo schema di Cloud Search:
- Identificare il comportamento previsto degli utenti
- Inizializzare un'origine dati
- Crea uno schema
- Schema di esempio completo
- Registrare lo schema
- Indicizzare i dati
- Testare lo schema
- Ottimizzare lo schema
Identificare il comportamento previsto degli utenti
Prevedere i tipi di query effettuate dagli utenti aiuta a definire la strategia. per creare lo schema.
Ad esempio, quando invii query su un database di film, potresti prevedere un utente sta effettuando una query del tipo "Mostrami tutti i film con Robert Redford". Il tuo schema, pertanto, deve supportare i risultati delle query basati su "tutti i film con un attore specifico".
Per definire lo schema in modo che rifletta i pattern di comportamento dell'utente, considera eseguendo queste attività:
- Valuta un insieme eterogeneo di query desiderate da utenti diversi.
- Identifica gli oggetti che potrebbero essere utilizzati nelle query. Gli oggetti sono logici insiemi di dati correlati, ad esempio un film in un database di film.
- Identificare le proprietà e i valori che compongono l'oggetto e che usati nelle query. Le proprietà sono gli attributi indicizzabili dell'oggetto, possono includere valori primitivi o altri oggetti. Ad esempio, un oggetto filmato potrebbe avere proprietà come il titolo e come valori originari. L'oggetto movie può contenere anche altri ad esempio i membri del cast, che hanno le loro proprietà, come un nome utente o un ruolo.
- Identificare esempi di valori validi per le proprietà. I valori sono i dati effettivi indicizzati per una proprietà. Ad esempio, il titolo di un film nel tuo database potrebbe essere "I predatori dell'arca perduta".
- Determina le opzioni di ordinamento e ranking desiderate dagli utenti. Ad esempio: quando eseguono query sui film, gli utenti potrebbero voler ordinare i film in ordine cronologico valutazione del pubblico e non è necessario ordinarli in ordine alfabetico per titolo.
- (Facoltativo) Valuta se una delle tue proprietà rappresenta un modello contesto in cui potrebbero essere eseguite le ricerche, ad esempio ruolo professionale reparto automatico, in modo che i suggerimenti di completamento automatico possano essere forniti in base contesto. Ad esempio, per chi cerca in un database di film, gli utenti potrebbero essere interessati solo a un certo genere di film. Gli utenti definiscono genere a cui vuole che le ricerche vengano restituite, possibilmente come parte del suo utente profilo. Poi, quando un utente inizia a digitare una query di film, solo film del genere preferito, come "film d'azione", sono suggeriti come dei suggerimenti di completamento automatico.
- Crea un elenco di oggetti, proprietà e valori di esempio che possono essere utilizzati nelle ricerche. Per maggiori dettagli su come viene utilizzato questo elenco, consulta la sezione Definisci opzioni operatore.
Inizializzare l'origine dati
Un'origine dati rappresenta i dati di un repository che è stato indicizzato e archiviati in Google Cloud. Per istruzioni sull'inizializzazione di un'origine dati, consulta le Gestire le origini dati di terze parti.
I risultati di ricerca di un utente vengono restituiti dall'origine dati. Quando un utente fa clic su un risultato di ricerca, Cloud Search indirizza l'utente all'elemento effettivo utilizzando URL fornito nella richiesta di indicizzazione.
Definisci gli oggetti
L'unità fondamentale dei dati in uno schema è l'oggetto, chiamato anche "schema ", che è una struttura logica di dati. In un database di film, la struttura logica dei dati è "movie". Un altro oggetto può essere una "persona" a che rappresentino il cast e la troupe coinvolti nel film.
Tutti gli oggetti in uno schema hanno una serie di proprietà o attributi che descrivono l'oggetto, ad esempio titolo e durata di un film o il nome e la data di nascita di una persona. Le proprietà di un oggetto possono includere elementi primitivi o altri oggetti.
La Figura 1 mostra gli oggetti filmato e persona, nonché gli oggetti associati proprietà.
![Disegno di connessioni schema tra entità](https://developers-dot-devsite-v2-prod.appspot.com/static/cloud-search/images/schemaExample.png?authuser=19&hl=it)
Uno schema di Cloud Search è
essenzialmente un elenco di istruzioni di definizione degli oggetti definite all'interno del
Tag objectDefinitions
. Il seguente snippet di schema mostra
le istruzioni objectDefinitions
per gli oggetti dello schema Movie e Person.
{
"objectDefinitions": [
{
"name": "movie",
...
},
{
"name": "person",
...
}
]
}
Quando definisci un oggetto schema, fornisci un valore name
per l'oggetto che deve
Deve essere univoco tra tutti gli altri oggetti nello schema. Di solito si usa un name
valore che descrive l'oggetto, ad esempio movie
per un oggetto film. Lo schema
usa il campo name
come identificatore chiave per gli oggetti indicizzabili. Per
per ulteriori informazioni sul campo name
, consulta
Definizione dell'oggetto.
Definisci le proprietà dell'oggetto
Come specificato nel riferimento per
ObjectDefinition,
il nome dell'oggetto è seguito da un insieme
options
,
e un elenco di
propertyDefinitions
.
La
options
può
consistere inoltre di
freshnessOptions
e
displayOptions
La
freshnessOptions
sono utilizzati per regolare il ranking nei risultati di ricerca in base all'aggiornamento di un articolo. La
displayOptions
vengono utilizzati per definire se visualizzare o meno etichette e proprietà specifiche
i risultati della ricerca di un oggetto.
La
propertyDefinitions
in cui definisci le proprietà di un oggetto, come il titolo del filmato
e la data di uscita.
Il seguente snippet mostra l'oggetto movie
con due proprietà: movieTitle
e releaseDate
.
{
"objectDefinitions": [
{
"name": "movie",
"propertyDefinitions": [
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": 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"
}
},
"displayOptions": {
"displayLabel": "Release date"
}
...
]
}
]
}
La PropertyDefinition è costituito dai seguenti elementi:
- una stringa
name
. - Un elenco di opzioni indipendenti dal tipo, ad esempio
isReturnable
nell'elenco precedente snippet di codice. - un tipo e le opzioni specifiche del tipo associate,
come
textPropertyOptions
eretrievalImportance
nello snippet precedente. - Un elemento
operatorOptions
che descrive come viene utilizzata la proprietà come operatore di ricerca. - Uno o più
displayOptions
, ad esempiodisplayLabel
nello snippet precedente.
Il name
di una proprietà deve essere univoco all'interno dell'oggetto che la contiene,
ma lo stesso nome può essere utilizzato in altri oggetti e oggetti secondari.
Nella Figura 1, il titolo e la data di uscita del film sono stati definiti due volte:
una volta nell'oggetto movie
e di nuovo nell'oggetto secondario filmography
dell'
person
oggetto. Questo schema riutilizza il campo movieTitle
in modo che lo schema possa supportare due tipi di comportamenti di ricerca:
- Mostra i risultati relativi ai film quando gli utenti cercano il titolo di un film.
- Mostra i risultati relativi alle persone quando gli utenti cercano il titolo di un film in cui ha recitato un attore.
Analogamente, lo schema riutilizza il campo releaseDate
perché ha lo stesso
per i due campi movieTitle
.
Nello sviluppo di uno schema personalizzato, pensa a come il repository potrebbe avere campi contenenti dati che vuoi dichiarare più di una volta nello schema.
Aggiungi opzioni indipendenti dal tipo
La PropertyDefinition elenca le opzioni delle funzionalità di ricerca generali comuni a tutte le proprietà a prescindere dal tipo di dati.
isReturnable
. Indica se la proprietà identifica dati che dovrebbero essere restituiti nei risultati di ricerca tramite l'API Query. Tutti i film di esempio sono restituibili. Le proprietà non restituibili potrebbero essere utilizzate per la ricerca o classifica i risultati senza che vengano restituiti all'utente.isRepeatable
: indica se sono consentiti più valori per la proprietà. Per Ad esempio, un film ha una sola data di uscita, ma può avere più attori.isSortable
: indica che la proprietà può essere utilizzata per l'ordinamento. Questo non può essere true per le proprietà ripetibili. Ad esempio, risultati relativi a film possono essere ordinati per data di uscita o valutazione del pubblico.isFacetable
: indica che la proprietà può essere utilizzata per generare facet. Un facet viene utilizzato per perfezionare i risultati di ricerca in cui l'utente visualizza i risultati iniziali e poi aggiunge criteri, o facet, per perfezionarli ulteriormente che consentono di analizzare i dati e visualizzare i risultati. Questa opzione non può essere true per le proprietà di tipo oggetto e Per poter impostare questa opzione, il valoreisReturnable
deve essere impostato su true. Infine, questa opzione è disponibile supportato per le proprietà enum, booleane e testo. Nel nostro schema di esempio, potremmo Suddivisione in facet digenre
,actorName
,userRating
empaaRating
per consentirne l'utilizzo da utilizzare per il perfezionamento interattivo dei risultati di ricerca.isWildcardSearchable
indica che gli utenti possono eseguire ricerche con caratteri jolly per: questa proprietà. Questa opzione è disponibile solo nelle proprietà di testo. Come caratteri jolly la ricerca funziona nel campo di testo dipende dal valore impostato nel exactMatchWithOperator. Se il criterioexactMatchWithOperator
viene impostato sutrue
, il valore testuale è tokenizzato come un valore atomico e viene utilizzata una ricerca con caratteri jolly rispetto a quest'ultimo. Ad esempio, se il valore di testo èscience-fiction
, una query con caratteri jollyscience-*
corrisponde. Se il criterioexactMatchWithOperator
è impostato sufalse
, il valore di testo viene tokenizzato e viene eseguita una ricerca con caratteri jolly per ogni token. Ad esempio, se il valore di testo è "fantascienza", il carattere jolly querysci*
ofi*
corrisponde all'elemento, mascience-*
non corrisponde.
Questi parametri delle funzionalità di ricerca generali sono tutti valori booleani; loro
hanno tutti un valore predefinito di false
e devono essere impostati su true
da utilizzare.
La seguente tabella mostra i parametri booleani impostati su true
per tutte le proprietà dell'oggetto movie
:
Proprietà | isReturnable |
isRepeatable |
isSortable |
isFacetable |
isWildcardSearchable |
---|---|---|---|---|---|
movieTitle |
true | true | |||
releaseDate |
true | true | |||
genre |
true | true | true | ||
duration |
true | ||||
actorName |
true | true | true | true | |
userRating |
true | true | |||
mpaaRating |
true | true |
Sia genre
che actorName
hanno isRepeatable
impostato su true
perché un film può appartenere a più di un genere e in genere ha
più di un attore. Una proprietà non può essere ordinabile se è ripetibile
o contenuti in un oggetto secondario ripetibile.
Definisci tipo
La
PropertyDefinition
nella sezione di riferimento elenca diversi xxPropertyOptions
in cui xx
è un tipo specifico,
ad esempio boolean
. Per impostare il tipo di dati della proprietà, devi definire
l'oggetto di tipo dati appropriato. Definizione di un oggetto di tipo dati per una proprietà
stabilisce il tipo di dati della proprietà. Ad esempio, la definizione
textPropertyOptions
per la proprietà movieTitle
indica che il film
il titolo è di tipo testo. Il seguente snippet mostra la proprietà movieTitle
con textPropertyOptions
che imposta il tipo di dati.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
...
},
...
},
Una proprietà può avere un solo tipo di dati associato. Ad esempio, nel nostro filmato
schema, releaseDate
può essere solo una data (ad es. 2016-01-13
) o una stringa
(ad es. January 13, 2016
), ma non entrambe.
Ecco gli oggetti di tipo dati utilizzati per specificare i tipi di dati per proprietà nello schema del filmato di esempio:
Proprietà | Oggetto tipo di dati |
---|---|
movieTitle |
textPropertyOptions |
releaseDate |
datePropertyOptions |
genre |
enumPropertyOptions |
duration |
textPropertyOptions |
actorName |
textPropertyOptions |
userRating |
integerPropertyOptions |
mpaaRating |
textPropertyOptions |
Il tipo di dati che scegli per la proprietà dipende dai casi d'uso previsti.
Nello scenario immaginario di questo schema di filmati, gli utenti sono previsti
ordinare i risultati in ordine cronologico, perciò releaseDate
è un oggetto data.
Se, ad esempio, ci fosse un caso d'uso previsto per confrontare le release di dicembre
nel corso degli anni con le uscite di gennaio, allora un formato stringa potrebbe essere utile.
Configura opzioni specifiche per tipo
La
PropertyDefinition
nella sezione di riferimento i link alle opzioni per ogni tipo. La maggior parte dei tipi
sono facoltative, ad eccezione dell'elenco di possibleValues
nel
enumPropertyOptions
. Inoltre, l'opzione orderedRanking
ti consente di:
ranking dei valori l'uno rispetto all'altro. La
Il seguente snippet mostra la proprietà movieTitle
con textPropertyOptions
impostando il tipo di dati e con l'opzione retrievalImportance
specifico per il tipo.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
...
},
...
}
Di seguito sono riportate le opzioni aggiuntive specifiche del tipo utilizzate nello schema di esempio:
Proprietà | Tipo | Opzioni specifiche per tipo |
---|---|---|
movieTitle |
textPropertyOptions |
retrievalImportance |
releaseDate |
datePropertyOptions |
|
genre |
enumPropertyOptions |
|
duration |
textPropertyOptions |
|
actorName |
textPropertyOptions |
|
userRating |
integerPropertyOptions |
orderedRanking , maximumValue |
mpaaRating |
textPropertyOptions |
Definisci opzioni operatore
Oltre alle opzioni specifiche, ogni tipo ha una serie di opzioni facoltative
operatorOptions
Queste opzioni descrivono in che modo la proprietà viene utilizzata come
operatore di ricerca. Il seguente snippet mostra la proprietà movieTitle
con
textPropertyOptions
che imposta il tipo di dati e,
Opzioni specifiche per tipo di retrievalImportance
e operatorOptions
.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "title"
}
},
...
}
Ogni operatorOptions
ha un operatorName
, ad esempio title
per un
movieTitle
. Il nome dell'operatore è l'operatore di ricerca per la proprietà. R
l'operatore di ricerca è il parametro effettivo che prevedi venga utilizzato dagli utenti
quando restringi una ricerca. Ad esempio, per cercare film in base al loro titolo,
l'utente deve digitare title:movieName
, dove movieName
è il nome di un film.
I nomi degli operatori non devono necessariamente corrispondere al nome della proprietà. Invece, è consigliabile utilizzare nomi degli operatori che riflettono le parole più comuni dagli utenti della tua organizzazione. Ad esempio, se i tuoi utenti preferiscono il termine "nome" anziché "title" per il titolo di un film, il nome dell'operatore deve essere impostato su "nome".
Puoi utilizzare lo stesso nome operatore per più proprietà, purché tutte
vengono risolte allo stesso tipo. Quando utilizzi un nome operatore condiviso durante
una query, vengono recuperate tutte le proprietà che utilizzano quel nome dell'operatore. Ad esempio:
supponiamo che l'oggetto film abbia plotSummary
e plotSynopsis
e ognuna di queste strutture aveva un operatorName
di plot
. Come
purché entrambe queste proprietà siano testo (textPropertyOptions
), una singola
utilizzando l'operatore di ricerca plot
, li recupera entrambi.
Oltre a operatorName
, le proprietà ordinabili possono avere
Campi lessThanOperatorName
e greaterThanOperatorName
in operatorOptions
.
Gli utenti possono utilizzare queste opzioni per creare query basate su confronti con un
inviato.
Infine, textOperatorOptions
ha un campo exactMatchWithOperator
in
operatorOptions
. Se
imposta exactMatchWithOperator
su true
, la stringa di query deve
corrispondono all'intero valore della proprietà, non solo all'interno del testo.
Il valore di testo viene trattato come un valore atomico nelle ricerche degli operatori e
le corrispondenze dei facet.
Ad esempio, prendi in considerazione l'indicizzazione di oggetti Book o Movie con proprietà genere.
I generi potrebbero includere "Fantascienza", "Scienza" e "Fiction". Con
exactMatchWithOperator
impostata su false
o omessa,
alla ricerca di un genere o
selezionando "Scienza" o "Fiction" facet
restituisce risultati per "Fantascienza" perché il testo è tokenizzato
"Scienza" e "Fiction" token esistono in "Fantascienza".
Quando il valore del campo exactMatchWithOperator
è true
,
il testo viene considerato come un singolo token, quindi
"Scienza" né "Fiction" corrisponde a "Fantascienza".
(Facoltativo) Aggiungi la sezione displayOptions
È presente una sezione facoltativa displayOptions
alla fine di ogni
Sezione propertyDefinition
. Questa sezione contiene una stringa displayLabel
.
displayLabel
è un'etichetta di testo consigliata e facile da usare
per la proprietà. Se la proprietà è configurata per la visualizzazione utilizzando
ObjectDisplayOptions,
questa etichetta viene visualizzata davanti alla proprietà. Se la proprietà è configurata
per display e displayLabel
non è definito, solo il valore della proprietà è
visualizzati.
Il seguente snippet mostra la proprietà movieTitle
con un displayLabel
impostato su "Titolo".
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "title"
}
},
"displayOptions": {
"displayLabel": "Title"
}
},
Di seguito sono riportati i valori displayLabel
per tutte le proprietà di movie
nello schema di esempio:
Proprietà | displayLabel |
---|---|
movieTitle |
Title |
releaseDate |
Release date |
genre |
Genre |
duration |
Run length |
actorName |
Actor |
userRating |
Audience score |
mpaaRating |
MPAA rating |
(Facoltativo) Aggiungi una sezione suggestionFilteringOperators[]
C'è un'opzione facoltativa
suggestionFilteringOperators[]
alla fine di qualsiasi sezione propertyDefinition
. Utilizza questa sezione per
definisci una proprietà utilizzata per filtrare i suggerimenti di completamento automatico. Ad esempio,
potrebbe definire l'operatore genre
per filtrare i suggerimenti in base all'utente
genere di film preferito. Quindi, quando l'utente digita la query di ricerca, solo quelli
i film corrispondenti al genere preferito vengono visualizzati come parte del completamento automatico
suggerimenti.
Registra il tuo schema
Per ricevere dati strutturati dalle query di Cloud Search, devi registrarti il tuo schema con il servizio schemi Cloud Search. La registrazione di uno schema richiede l'ID origine dati ottenuto durante Passaggio Inizializza un'origine dati.
Utilizzando l'ID origine dati, invia un UpdateSchema per registrare lo schema.
Come descritto in dettaglio nella UpdateSchema pagina di riferimento, invia la seguente richiesta HTTP per registrare lo schema:
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
Il corpo della richiesta deve contenere quanto segue:
{ "validateOnly": // true or false, "schema": { // ... Your complete schema object ... } }
Utilizza l'opzione validateOnly
per verificare la validità dello schema senza
per registrarlo.
Indicizza i dati
Una volta registrato lo schema, compila l'origine dati utilizzando Indice chiamate. In genere, l'indicizzazione viene eseguita all'interno del connettore di contenuti.
Utilizzando lo schema del filmato, veniva richiesta una richiesta di indicizzazione dell'API REST per un singolo film ha questo aspetto:
{
"name": "datasource/<data_source_id>/items/titanic",
"acl": {
"readers": [
{
"gsuitePrincipal": {
"gsuiteDomain": true
}
}
]
},
"metadata": {
"title": "Titanic",
"sourceRepositoryUrl": "http://www.imdb.com/title/tt2234155/?ref_=nv_sr_1",
"objectType": "movie"
},
"structuredData": {
"object": {
"properties": [
{
"name": "movieTitle",
"textValues": {
"values": [
"Titanic"
]
}
},
{
"name": "releaseDate",
"dateValues": {
"values": [
{
"year": 1997,
"month": 12,
"day": 19
}
]
}
},
{
"name": "actorName",
"textValues": {
"values": [
"Leonardo DiCaprio",
"Kate Winslet",
"Billy Zane"
]
}
},
{
"name": "genre",
"enumValues": {
"values": [
"Drama",
"Action"
]
}
},
{
"name": "userRating",
"integerValues": {
"values": [
8
]
}
},
{
"name": "mpaaRating",
"textValues": {
"values": [
"PG-13"
]
}
},
{
"name": "duration",
"textValues": {
"values": [
"3 h 14 min"
]
}
}
]
}
},
"content": {
"inlineContent": "A seventeen-year-old aristocrat falls in love with a kind but poor artist aboard the luxurious, ill-fated R.M.S. Titanic.",
"contentFormat": "TEXT"
},
"version": "01",
"itemType": "CONTENT_ITEM"
}
Nota che il valore di movie
nel campo objectType
corrisponde all'oggetto
nome della definizione nello schema. Abbinando questi due valori, Cloud Search sa
quale oggetto schema utilizzare durante l'indicizzazione.
Nota inoltre come viene utilizzata l'indicizzazione della proprietà schema releaseDate
proprietà secondarie di year
, month
e day
che eredita perché sono
definito come tipo di dati date
mediante l'utilizzo di datePropertyOptions
per la sua definizione.
Tuttavia, poiché i criteri year
, month
e day
non sono definiti nello schema,
non possono eseguire query su una di queste proprietà (ad es. year
) singolarmente.
Inoltre, nota come la proprietà ripetibile actorName
viene indicizzata utilizzando un elenco
di valori.
Identificazione di potenziali problemi di indicizzazione
I due problemi più comuni relativi agli schemi e all'indicizzazione sono:
La richiesta di indicizzazione contiene un oggetto o un nome di proprietà dello schema che non erano registrato nel servizio di schema. Questo problema fa sì che la proprietà o l'oggetto da ignorare.
La tua richiesta di indicizzazione ha una proprietà con un valore del tipo diverso da quello del tipo registrate nello schema. Questo problema fa sì che Cloud Search restituisca un errore al momento dell'indicizzazione.
Testa lo schema con diversi tipi di query
Prima di registrare lo schema per un repository di dati di produzione di grandi dimensioni, valuta la possibilità di eseguire test con un repository di dati di test più piccolo. Esegui il test con un un repository di test più piccolo consente di apportare rapidamente modifiche allo schema, ed eliminare i dati indicizzati, senza influire su un indice più grande o su un indice di produzione esistente. Per un repository di dati di test, crea un ACL che autorizza solo un utente di test in modo che gli altri utenti non vedano questi dati nei risultati della Ricerca.
Per creare un'interfaccia di ricerca per convalidare le query di ricerca, consulta Interfaccia di ricerca
Questa sezione contiene diversi esempi di query che potresti utilizzare per testare uno schema di un filmato.
Eseguire un test con una query generica
Una query generica restituisce tutti gli elementi nell'origine dati contenenti uno specifico stringa. Utilizzando un'interfaccia di ricerca, potresti eseguire una query generica su un film digitando la parola "titanic" e premendo Invio. Tutti film con la parola "titanic" devono essere restituiti nei risultati di ricerca.
Esegui il test con un operatore
L'aggiunta di un operatore alla query limita i risultati agli elementi che corrispondono
dell'operatore. Ad esempio, potresti voler utilizzare l'operatore actor
per trovare
tutti i film con un attore specifico. Con un'interfaccia di ricerca, puoi eseguire
query con questo operatore semplicemente digitando una coppia operator=value, come
"actor:Zane" e premendo "actor:Zane". Tutti i film con Zane come attore
devono essere restituiti nei risultati di ricerca.
Ottimizza lo schema
Una volta che lo schema e i dati sono in uso, continua a monitorare cosa funziona e non funzionano per i tuoi utenti. Ti consigliamo di modificare lo schema per le seguenti situazioni:
- Indicizzazione di un campo che non era stato precedentemente indicizzato. Ad esempio, i tuoi utenti potrebbe cercare ripetutamente film in base al nome del regista, modifica lo schema in modo che supporti il nome del direttore come operatore.
- Modifica dei nomi degli operatori di ricerca in base al feedback degli utenti. I nomi degli operatori sono sono pensati per essere facili da usare. Se i tuoi utenti "ricordano" costantemente quello sbagliato dell'operatore, valuta la possibilità di cambiarlo.
Reindicizzazione dopo una modifica dello schema
La modifica di uno dei seguenti valori nello schema non richiede di reindicizzare i dati. Puoi semplicemente inviare un nuovo UpdateSchema e l'indice continuerà a funzionare:
- Nomi degli operatori.
- Valori minimi e massimi interi.
- Ranking in ordine di numeri interi ed enum.
- Opzioni di aggiornamento.
- Opzioni di visualizzazione.
Per le seguenti modifiche, i dati indicizzati in precedenza continueranno a funzionare secondo lo schema registrato in precedenza. È necessario, però, reindicizzare voci esistenti per visualizzare le modifiche in base allo schema aggiornato, se presenta questi modifiche:
- Aggiunta o rimozione di una nuova proprietà o di un nuovo oggetto
- Modifica di
isReturnable
,isFacetable
oisSortable
dafalse
atrue
.
Devi impostare isFacetable
o isSortable
su true
solo se hai un
un caso d'uso e un'esigenza chiari.
Infine, quando aggiorni lo schema contrassegnando una proprietà isSuggestable
,
devi reindicizzare i dati, causando un ritardo nell'uso del completamento automatico per
proprietà.
Modifiche alle proprietà non consentite
Alcune modifiche allo schema non sono consentite, anche se reindicizzi i dati, perché interrompere l'indice o generare risultati di ricerca di scarsa qualità o incoerenti. Questi includi modifiche a:
- Tipo di dati della proprietà.
- Nome proprietà.
- Impostazione
exactMatchWithOperator
. - Impostazione
retrievalImportance
.
Tuttavia, c'è un modo per aggirare questa limitazione.
Apporta una modifica complessa allo schema
Per evitare modifiche che genererebbero risultati di ricerca di scarsa qualità o una ricerca non funzionante di Google, Cloud Search impedisce alcuni tipi di modifiche UpdateSchema dopo l'indicizzazione del repository. Ad esempio, il tipo di dati il nome di una proprietà non può essere modificato dopo essere stato impostato. Queste modifiche non può essere ottenuta mediante una semplice UpdateSchema richiesta, anche se reindicizzi i dati.
Nei casi in cui devi apportare una modifica non consentita alle tue schema, spesso puoi apportare una serie di modifiche consentite che ottengono lo stesso effetto. In generale, ciò comporta la prima migrazione delle proprietà indicizzate da una definizione di oggetto precedente a una più recente, per poi inviare una richiesta di indicizzazione che usa solo la proprietà più recente.
I seguenti passaggi mostrano come modificare il tipo di dati o il nome di una proprietà:
- Aggiungi una nuova proprietà alla definizione dell'oggetto nello schema. Utilizza un altro della proprietà che vuoi modificare.
- Invia il UpdateSchema una richiesta con la nuova definizione. Ricordati di inviare l'intero schema, includendo sia la nuova che la vecchia proprietà, nella richiesta.
Esegui il backfill dell'indice dal repository di dati. Per eseguire il backfill dell'indice, invia tutte le richieste di indicizzazione usando la nuova proprietà, ma non precedente, poiché questo causerebbe un doppio conteggio delle corrispondenze delle query.
- Durante il backfill dell'indicizzazione, controlla la nuova proprietà e imposta come predefinita la vecchia proprietà per evitare comportamenti incoerenti.
- Una volta completato il backfill, esegui query di test per verificare.
Elimina la proprietà precedente. Inviane un altro UpdateSchema richiesta senza il vecchio nome della proprietà e non utilizzare più la vecchia proprietà nome nelle future richieste di indicizzazione.
Eseguire la migrazione dell'utilizzo della vecchia proprietà alla nuova. Ad esempio, se modifichi il nome della proprietà da autore ad autore, devi aggiornare la query per utilizzare l'autore, dove in precedenza faceva riferimento al creatore.
Cloud Search conserva un record di qualsiasi proprietà o oggetto eliminato per 30 giorni per evitare qualsiasi riutilizzo che possa causare risultati di indicizzazione imprevisti. Entro questi 30 giorni, devi abbandonare tutti i tipi di utilizzo come un oggetto o una proprietà, tra cui omettili dalle future richieste di indicizzazione. In questo modo, se in seguito decidi di reintegrare la proprietà o , puoi farlo in modo da mantenere la correttezza dell'indice.
Scopri i limiti delle dimensioni
Cloud Search impone dei limiti alle dimensioni degli oggetti di dati strutturati e degli schemi. Questi limiti sono:
- Il numero massimo di oggetti di primo livello è 10 oggetti.
- La profondità massima di una gerarchia di dati strutturati è 10 livelli.
- Il numero totale di campi di un oggetto è limitato a 1000, che include il numero di campi primitivi più la somma del numero di in ogni oggetto nidificato.
Passaggi successivi
Di seguito sono riportati alcuni passaggi che puoi eseguire:
Crea un'interfaccia di ricerca per verifica lo schema.
Ottimizza lo schema per migliorare la qualità della ricerca.
Struttura uno schema per un'interpretazione ottimale delle query.
Scopri come sfruttare Schema di
_dictionaryEntry
da definire sinonimi dei termini comunemente usati nella tua azienda. Per utilizzare_dictionaryEntry
fai riferimento agli Definire i sinonimi.Crea un connettore.