Struttura uno schema per un'interpretazione ottimale delle query

La interpretazione delle query di Cloud Search converte automaticamente gli operatori e i filtri nella query di un utente in una query strutturata basata su operatori. La funzionalità utilizza gli operatori definiti nello schema e i documenti indicizzati per dedurre l'intenzione della query. In questo modo, gli utenti possono eseguire ricerche con un numero minimo di parole chiave e ottenere risultati precisi.

La presentazione dei risultati dipende dalla confidenza. La confidenza aumenta quando le stringhe di query vengono visualizzate in modo coerente in campi di schema specifici (ad es. "Tom Hanks" in un campo actors). La confidenza diminuisce quando le stringhe vengono visualizzate all'interno di un testo generale. Una confidenza elevata mostra solo i risultati interpretati, mentre una confidenza inferiore li combina con i risultati delle parole chiave standard.

Esempio di interpretazione delle query

Considera un database contenente informazioni sui film. La figura 1 mostra una query di ricerca di esempio e la relativa interpretazione.

Panoramica dell'interpretazione delle query
Figura 1. Interpretazione delle query

Per questo esempio, l'interpretazione delle query:

  • Determina dallo schema che gli oggetti di primo livello sono objecttype:movies.
  • Scansiona i documenti per identificare dove si verifica "azione". Se viene visualizzato principalmente in un campo genre, la confidenza aumenta che si tratti di un valore di proprietà per quel campo.

L'interpretazione risultante è: actor:"tom hanks" genre:action objecttype:movies

L'interpretazione delle query è automatica per tutti gli utenti, ma puoi ottimizzarla strutturando lo schema come descritto nelle sezioni seguenti.

Strutturare lo schema per l'interpretazione delle query

L'ottimizzazione dello schema garantisce di usufruire dell'interpretazione delle query.

Attivare le interpretazioni dei nomi visualizzati

L'interpretazione delle query utilizza objectDefinitions e propertyDefinitions per interpretare le query. Crea nomi visualizzati intuitivi utilizzando displayLabel per le proprietà, objectDisplayLabel per gli oggetti e operatorName per gli operatori.

Questo esempio mostra i nomi visualizzati intuitivi per un oggetto film:

{
  "objectDefinitions": [{
    "name": "movie",
    "options": {
      "displayOptions": { "objectDisplayLabel": "Films" }
    },
    "propertyDefinitions": [{
      "name": "genre",
      "isReturnable": true,
      "textPropertyOptions": {
        "operatorOptions": { "operatorName": "genre" }
      },
      "displayOptions": { "displayLabel": "Category" }
    }]
  }]
}

Questi nomi visualizzati consentono interpretazioni come:

  • "film d'azione" -> genre:action object:movies
  • "film con genere azione o thriller" -> objecttype:movies genre:(action OR thriller)
  • "film di categoria commedia" -> genre:comedy objecttype:movies

Attivare le interpretazioni di date, numeri e ordinamenti

Definisci lessThanOperatorName e greaterThanOperatorName in IntegerOperatorOptions per tutte le proprietà di data e numeriche. Per attivare l'ordinamento, imposta isSortable.

Questo esempio attiva queste opzioni:

{
  "objectDefinitions": [{
    "propertyDefinitions": [
      {
        "name": "runtime",
        "isSortable": true,
        "integerPropertyOptions": {
          "operatorOptions": {
            "operatorName": "runtime",
            "lessThanOperatorName": "runtimelessthan",
            "greaterThanOperatorName": "runtimegreaterthan"
          }
        }
      },
      {
        "name": "releasedate",
        "isSortable": true,
        "datePropertyOptions": {
          "operatorOptions": {
            "operatorName": "releasedate",
            "lessThanOperatorName": "releasedbefore",
            "greaterThanOperatorName": "releasedafter"
          }
        }
      }
    ]
  }]
}

Queste impostazioni consentono interpretazioni come:

  • "film usciti quest'anno" -> objecttype:movies releasedafter:2019-1-1 releasedbefore:2019-12-31
  • "film con durata inferiore a 90" -> objecttype:movies runtimelessthan:90

Attivare l'interpretazione degli operatori riservati

Utilizza gli operatori integrati come type, before, after, e objecttype:

  1. Compila updateTime in ItemMetadata per utilizzare before e after.
  2. Compila mimeType in ItemMetadata per il rilevamento automatico. Ad esempio, "video d'azione" elenca i documenti con tipi MIME video.

Limitazioni dell'interpretazione delle query

  • Funziona solo per questi ACL dell'origine dati:
    • Pubblico del dominio.
    • Pubblico dell'origine dati.
    • La maggior parte dei documenti condivide lo stesso ACL ereditato.
  • I nomi degli operatori condivisi (ad es. priority e severity che utilizzano entrambi 0-3) riducono la confidenza.
  • Per impostazione predefinita, l'interpretazione utilizza le lettere minuscole per i valori dei campi, a meno che tu non utilizzi exactMatchWithOperator.
  • L'operatore source non è supportato.
  • I termini combinati di operatori e testo libero (ad es. "p0 cases severity:s0") non vengono interpretati.
  • I risultati vengono sempre combinati con i risultati classificati in base alla pertinenza.