La funzionalità di interpretazione delle query di Cloud Search interpreta automaticamente gli operatori e i filtri nella query di un utente e converte questi elementi 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 funzione consente agli utenti di effettuare ricerche utilizzando il numero minimo di parole chiave e di ottenere comunque risultati precisi.
I risultati effettivi presentati all'utente dipendono dall'affidabilità dell'interpretazione della query. L'affidabilità si basa su diversi fattori, tra cui la posizione in cui le stringhe di query appaiono nei documenti indicizzati. Una stringa, ad esempio il nome dell'attore "Tom Hanks", che viene visualizzata in modo coerente in un campo di schema denominato actors
, genera un'affidabilità più elevata. La stessa stringa ("Tom Hanks") visualizzata all'interno di un paragrafo, anziché nel campo dello schema, può comportare una minore affidabilità. Nel caso di un'elevata affidabilità, all'utente vengono mostrati solo i risultati dell'interpretazione della query. In caso di affidabilità più debole, i risultati dell'interpretazione della query vengono combinati con i risultati di ricerca di una parola chiave normale.
Interpretazione di query di esempio
Supponi 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 quanto segue:
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 i "filmati" nella query sono un tipo di oggetto.Scansiona i documenti nell'origine dati, insieme allo schema, per determinare dove si verifica la stringa "action". Se la stringa si verifica principalmente in un campo dell'origine dati "genere" specifico, l'interpretazione della query ha la certezza che "azione" sia un valore di proprietà per la proprietà "genere" come definito nello schema. Se la stringa si trova 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 è abilitata automaticamente per tutti i clienti Cloud Search senza operazioni aggiuntive. 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
Dovresti strutturare lo schema per assicurarti di poter trarre vantaggio dall'interpretazione delle query.
Attiva le interpretazioni dei nomi visualizzati
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 film ha un valore
objectDisplayLabel
"Film".La proprietà del genereDefinizione ha un "genere"
operatorName
e una "Categoria"displayLabel
.
Questi nomi visualizzati consentono a Cloud Search di interpretare le seguenti query:
- "film d'azione", "film di genere d'azione" o "film d'azione in genere" vengono
interpretati come
genre:action object:movies
. - "film con genere d'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 commedie" viene interpretato come
genre:comedy objecttype:movies
.
Abilita le interpretazioni di data, numeri e ordinamento
Devi definire lessThanOperatorName
e greaterThanOperatorName
,
specificati in
IntegerOperatorOptions
, per tutte le date e
le proprietà numeriche. Queste impostazioni consentono l'interpretazione
automatica di date e numeri. Inoltre, per abilitare le interpretazioni dell'ordinamento, imposta l'opzione isSortable
per le proprietà di data e numeri. 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
fa riferimento alla durata di un film. Iruntimelessthan
e ilruntimegreaterthan
sono impostati per questa proprietà. - La proprietà della data
releaseDate
si riferisce alla data di uscita di un film nei cinema. I valorireleasedbefore
ereleasedafter
sono impostati per questa proprietà.
Queste impostazioni consentono a Cloud Search di interpretare le seguenti 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 settimana di marzo, "film in uscita la settimana scorsa" viene
interpretato come
objecttype: movies releasedafter:2019-3-10 releasedbefore:2019-3-16
- "filmati con tempo di esecuzione inferiore a 90" viene interpretato come
objjecttype: movies runtimelessthan:90
. - Supponendo che l'anno sia il 2019, "film usciti quest'anno e di durata superiore a 120" viene interpretato come
releasedafter:2019-1-1 releasedbefore:2019-12-31 objecttype:movies runtimegreaterthan:120
. - "ordina film per data di uscita" filtrerebbe in base a "objecttype: film" e i risultati presentati verrebbero ordinati in base alla data di uscita, con l'ordinamento predefinito crescente.
Attiva l'interpretazione degli operatori riservati
Puoi anche utilizzare gli operatori integrati riservati a type
, before
, after
e objecttype
per migliorare l'interpretazione delle query. Quando indicizzi un documento, segui questi passaggi:
Completa il campo
updateTime
inItemMetadata
per utilizzare gli operatoribefore
eafter
. Queste impostazioni consentono a Cloud Search di interpretare le seguenti query:- "film della scorsa settimana" elenca tutti i film aggiornati nell'indice la settimana precedente.
- "film prima di gennaio 2019" elenca tutti i film indicizzati prima di gennaio 2019.
Completa 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 MIMEapplication/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 nel dominio (tutti gli utenti del dominio possono accedere).
- Tutti i documenti sono origini dati pubbliche (tutti coloro che hanno accesso all'ACL delle origini dati).
- La maggior parte dei documenti nell'origine dati ha lo stesso ACL (tutti i documenti ereditano l'ACL dallo stesso elemento container) senza che siano definiti lettori aggiuntivi.
- Se più operatori di schema hanno lo stesso valore, l'interpretazione di tale valore nell'intento di un operatore per una query dipende dal fattore di confidenza complessivo restituito dal sistema di interpretazione delle query. Ad esempio, supponi 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 riduce 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 senza costi non vengono interpretate. Ad esempio, la query "p0 Priority cases" (gravità casi:s0) non è supportata perché "casi con priorità p0" è un termine di testo libero, mentre "severity:s0" è un termine basato su operatore.
- La strategia di interpretazione delle query unisce sempre i risultati interpretati con i risultati ordinari (non interpretati, con ranking in base alla pertinenza). Non sostituisce l'intera pagina dei risultati.