La funzionalità di interpretazione delle query di Cloud Search interpreta automaticamente gli operatori e i filtri in una query dell'utente e li converte in una query strutturata basata su operatori. L'interpretazione delle query utilizza gli operatori definiti nello schema, insieme ai documenti indicizzati, per dedurre il significato della query dell'utente. Questa funzionalità consente a un utente di eseguire ricerche con un numero minimo di parole chiave, ottenendo comunque risultati precisi.
I risultati effettivi presentati all'utente dipendono dalla confidenza
dell'interpretazione della query. Il livello di confidenza si basa su diversi fattori,
tra cui la posizione delle stringhe di query nei documenti indicizzati. Una stringa, ad esempio il nome dell'attore "Tom Hanks", che compare in modo coerente in un campo dello schema chiamato actors
, genera una maggiore affidabilità. La stessa stringa
("Tom Hanks") che compare all'interno di un paragrafo, anziché in un campo dello schema, può
comportare una confidenza inferiore. In caso di elevata confidenza, all'utente vengono mostrati solo i risultati
dell'interpretazione della query. In caso di confidenza
più debole, i risultati dell'interpretazione della query vengono combinati con i normali
risultati di ricerca per parole chiave.
Interpretazione della query di esempio
Supponiamo di avere un'origine dati, ad esempio un database, contenente informazioni sui film. La figura 1 mostra una query di ricerca di esempio e l'interpretazione risultante.

Data questa query di esempio, l'interpretazione della query esegue le seguenti operazioni:
Analizza lo schema e determina che gli oggetti di primo livello nell'origine dati sono classificati come
objecttype:movies
. L'interpretazione delle query ora sa che "film" nella query è un tipo di oggetto.Esegue la scansione dei documenti nell'origine dati, insieme allo schema, per determinare dove si trova la stringa "action". Se la stringa si verifica principalmente in un campo di origine dati "genere" specifico, l'interpretazione della query ha la certezza che "azione" sia un valore della proprietà "genere" come definito nello schema. Se la stringa si verifica principalmente nel contesto di paragrafi di contenuti, il livello di confidenza dell'interpretazione della query diminuisce.
L'interpretazione della query risultante è:
actor:“tom hanks” genre:action objecttype:movies
L'interpretazione delle query viene attivata automaticamente per tutti i clienti di Cloud Search senza ulteriori interventi. Tuttavia, per un'interpretazione ottimale delle query, devi strutturare lo schema in base alle istruzioni riportate in questo documento.
Strutturare lo schema per supportare l'interpretazione delle query
Devi strutturare lo schema in modo da poter trarre vantaggio dall'interpretazione delle query.
Attivare le interpretazioni del nome visualizzato
L'interpretazione delle query di Cloud Search utilizza
objectDefinitions
e
propertyDefinitions
in uno schema per interpretare la query di un utente e ottimizzare i risultati. Per massimizzare il vantaggio di questi elementi dello schema, devi creare
nomi visualizzati intuitivi utilizzando
displayLabel
per i nomi delle proprietà,
objectDisplayLabel
per i nomi degli oggetti e operatorName
per gli operatori.
Il seguente schema mostra nomi visualizzati intuitivi per un oggetto film:
{
"objectDefinitions": [
{
"name": "movie",
"options": {
"displayOptions": {
"objectDisplayLabel": "Films"
}
...
},
"propertyDefinitions": [
{
"name": "genre",
"isReturnable": true,
"isRepeatable": true,
"isFacetable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "genre"
}
},
"displayOptions": {
"displayLabel": "Category"
}
},
...
]
}
]
}
Nell'esempio precedente:
La definizione dell'oggetto filmato ha un
objectDisplayLabel
"Film".La proprietà Definition del genere ha un
operatorName
"genere" e unadisplayLabel
"categoria".
Questi nomi visualizzati consentono a Cloud Search di interpretare le query nel seguente modo:
- "film d'azione", "film di genere d'azione" o "film di genere azione" vengono interpretati come
genre:action object:movies
. - "film di genere azione o thriller" viene interpretato come
objecttype:movies genre:(action OR thriller)
. - "film d'azione" o "film d'azione" viene interpretato come
genre:action objecttype:movies
. - "film della categoria commedia" viene interpretato come
genre:comedy objecttype:movies
.
Attivare le interpretazioni di data, numeriche e di ordinamento
Devi definire lessThanOperatorName
e greaterThanOperatorName
,
specificati in
IntegerOperatorOptions
, per tutte le proprietà
numeriche e di data. Queste impostazioni consentono l'interpretazione automatica di date e
valori numerici. Inoltre, per attivare le interpretazioni dell'ordinamento,
imposta l'opzione isSortable
per le proprietà numeriche e di data. Il seguente
schema mostra come attivare queste opzioni.
{
"objectDefinitions": [
{
"options": {
"displayOptions": {
"objectDisplayLabel": "Films"
}
},
"propertyDefinitions": [
{
"name": "runtime",
"isReturnable": true,
"isSortable": true,
"integerPropertyOptions": {
"orderedRanking": "DESCENDING",
"minimumValue": {
"value": 10
},
"maximumValue": {
"value": 500
},
"operatorOptions": {
"operatorName": "runtime",
"lessThanOperatorName": "runtimelessthan",
"greaterThanOperatorName": "runtimegreaterthan"
}
},
"displayOptions": {
"displayLabel": "Length"
}
},
{
"name": "releasedate",
"isReturnable": true,
"isSortable": true,
"datePropertyOptions": {
"operatorOptions": {
"operatorName": "releasedate",
"lessThanOperatorName": "releasedbefore",
"greaterThanOperatorName": "releasedafter"
}
}
}
]
}
]
}
Nell'esempio precedente:
- La proprietà numerica
runtime
si riferisce alla durata di un film.runtimelessthan
eruntimegreaterthan
sono impostati per questa proprietà. - La proprietà data
releaseDate
si riferisce alla data di uscita di un film nelle sale cinematografiche.releasedbefore
ereleasedafter
sono impostati per questa proprietà.
Queste impostazioni consentono a Cloud Search di eseguire le seguenti interpretazioni delle query:
- Supponendo che l'anno sia il 2019, "film usciti quest'anno" viene interpretato come
objecttype: movies releasedafter:2019-1-1 releasedbefore:2019-12-31
. - Supponendo che la settimana sia la terza di marzo, "film usciti la settimana scorsa" viene
interpretato come
objecttype: movies releasedafter:2019-3-10 releasedbefore:2019-3-16
- "film con durata inferiore a 90" viene interpretato come
objjecttype: movies runtimelessthan:90
. - Supponendo che l'anno sia il 2019, "film usciti quest'anno e durata superiore a
120 minuti" viene interpretato come
releasedafter:2019-1-1 releasedbefore:2019-12-31 objecttype:movies runtimegreaterthan:120
. - "ordina i film per data di uscita" filtrerebbe in base a "objecttype: movies" e i risultati presentati sarebbero ordinati in base alla data di uscita con l'ordine di ordinamento predefinito crescente.
Abilitare l'interpretazione degli operatori riservati
Puoi anche utilizzare gli operatori integrati riservati type
, before
, after
, objecttype
per migliorare l'interpretazione delle query. Quando indicizzi un documento, segui
queste istruzioni:
Compila il campo
updateTime
inItemMetadata
per utilizzare gli operatoribefore
eafter
. Queste impostazioni consentono a Cloud Search di eseguire le seguenti interpretazioni delle query:- "film della scorsa settimana" elencherebbe tutti i film aggiornati nell'indice la settimana precedente.
- "film prima di gennaio 2019" elencherebbe tutti i film indicizzati prima di gennaio 2019.
Compila il campo
mimeType
inItemMetadata
per utilizzare il rilevamento automatico del tipo. Una query "video d'azione" elencherebbe tutti i documenti di film d'azione con un tipo mime diapplication/mp4
,application/mpeg4
,application/x-shockwave-flash
,video/
eapplication/vnd.google-apps.video
.
Limitazioni dell'interpretazione delle query
La funzionalità di interpretazione delle query presenta le seguenti limitazioni.
- L'interpretazione delle query funziona solo per questi ACL delle origini dati:
- Tutti i documenti sono pubblici per il dominio (tutti gli utenti del dominio possono accedervi).
- Tutti i documenti sono pubblici per l'origine dati (tutti coloro che hanno accesso all'elenco di controllo accesso dell'origine dati).
- La maggior parte dei documenti nell'origine dati ha lo stesso ACL (tutti i documenti ereditano l'ACL dallo stesso elemento contenitore) senza lettori aggiuntivi definiti.
- Se più operatori dello schema hanno lo stesso valore, l'interpretazione di
questo valore in un intent dell'operatore per una query dipende dal fattore di confidenza
complessivo restituito dal sistema di interpretazione delle query. Ad esempio, supponiamo di avere le proprietà
priority
eseverity
con gli stessi nomi degli operatori definiti nello schema. Supponiamo che entrambi gli operatori possano avere i valori 0, 1, 2 o 3. In questo esempio, "0" in una query può fare riferimento al valore dell'operatore perpriority
oseverity
. Questi valori sono ambigui e il livello di confidenza è inferiore. - Per impostazione predefinita, l'interpretazione delle query di Cloud Search converte in minuscolo i valori dei campi durante l'interpretazione della query, ad eccezione degli operatori di testo definiti con le opzioni
exactMatchWithOperator
. - L'operatore
source
non è supportato nelle query. - Le query che combinano termini basati su operatori e termini di testo libero non vengono interpretate. Ad esempio, la query "p0 priority cases severity:s0" non sarebbe supportata perché "p0 priority cases" è un termine di testo libero, mentre "severity:s0" è un termine basato su operatori.
- La strategia di interpretazione delle query combina sempre i risultati interpretati con i risultati ordinari (non interpretati, classificati in base alla pertinenza). Non esegue una sostituzione completa dei risultati della pagina.