Strutturare uno schema per un'interpretazione ottimale delle query

La funzionalità di interpretazione delle query di Cloud Search interpreta automaticamente gli operatori e i filtri nella query di un 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 dall'affidabilità dell'interpretazione della query. L'affidabilità si basa su diversi fattori, tra cui la posizione delle stringhe di query nei documenti indicizzati. Una stringa, come il nome dell'attore "Tom Hanks", che compare in modo coerente in un campo dello schema denominato actors, genera un'affidabilità maggiore. La stessa stringa ("Tom Hanks") che compare all'interno di un paragrafo, anziché nel campo dello schema, può risultare in una confidenza inferiore. In caso di elevata affidabilità, all'utente vengono mostrati solo i risultati dell'interpretazione della query. In caso di minore affidabilità, i risultati dell'interpretazione della query vengono combinati con i normali risultati di ricerca per parole chiave.

Interpretazione di 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.

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

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 "movies" nella query è un tipo di oggetto.

  • Esegue la scansione dei documenti nell'origine dati, in combinazione con lo schema, per determinare dove si verifica la stringa "azione". Se la stringa si verifica principalmente in un campo dell'origine dati specifico "genere", l'interpretazione della query ha la certezza che "azione" sia un valore della proprietà per la 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 alcun intervento aggiuntivo. Tuttavia, per un'interpretazione ottimale delle query, devi strutturare lo schema in base alle istruzioni riportate in questo documento.

Struttura 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 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.

Lo schema seguente mostra nomi visualizzati intuitivi per un oggetto Movie:

{
  "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 definizione della proprietà genere ha un "genere" operatorName e una "Categoria" displayLabel.

Questi nomi visualizzati consentono a Cloud Search di effettuare le seguenti interpretazioni delle query:

  • "film d'azione", "film di tipo azione" o "film 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 commedia" viene interpretato come genre:comedy objecttype:movies.

Attivare le interpretazioni di date, numeri e ordinamento

Devi definire lessThanOperatorName e greaterThanOperatorName, specificati in IntegerOperatorOptions, per tutte le proprietà numeriche e delle date. Queste impostazioni consentono interpretazioni automatiche di date e valori numerici. Inoltre, per attivare le interpretazioni dell'ordinamento, imposta l'opzione isSortable per le proprietà di date e numeri. Lo schema seguente 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 e runtimegreaterthan sono impostati per questa proprietà.
  • La proprietà data releaseDate si riferisce alla data di uscita di un film nelle sale cinematografiche. releasedbefore e releasedafter 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 scorsa settimana" viene interpretato come objecttype: movies releasedafter:2019-3-10 releasedbefore:2019-3-16
  • "Film con una durata 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.
  • "sort movies by release date" filtrerà per "objecttype: movies" e i risultati presentati verranno ordinati in base alla data di uscita con l'ordinamento predefinito in ordine crescente.

Attivare 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:

  1. Compila il campo updateTime in ItemMetadata per utilizzare gli operatori before e after. Queste impostazioni consentono a Cloud Search di effettuare le seguenti interpretazioni delle 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.
  2. Compila il campo mimeType in ItemMetadata per utilizzare il rilevamento automatico del tipo. Una query "video d'azione" elenca tutti i documenti di film d'azione con un tipo mime di application/mp4, application/mpeg4, application/x-shockwave-flash,video/ e application/vnd.google-apps.video.

Limitazioni all'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 accedervi).
    • Tutti i documenti sono di dominio pubblico (tutti gli utenti che hanno accesso all'ACL dell'origine dati).
    • La maggior parte dei documenti nella sorgente dati ha lo stesso ACL (tutti i documenti ereditano l'ACL dallo stesso elemento del contenitore) senza lettori aggiuntivi definiti.
  • Se più operatori dello schema hanno lo stesso valore, l'interpretazione di quel valore per l'intenzione di un 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 e severity con gli stessi nomi di operatore 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 per priority o severity. Questi valori sono ambigui e il livello di confidenza è inferiore.
  • Per impostazione predefinita, l'interpretazione delle query di Cloud Search abbassa la maiuscola dei 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 quelli ordinari (non interpretati, classificati in base alla pertinenza). Non esegue una sostituzione completa della pagina dei risultati.