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 converte questi elementi in una query strutturata basata su operatori. L'interpretazione delle query utilizza operatori definiti nello schema, insieme ai documenti indicizzati, per ricavare il significato della query dell'utente. Questa funzione consente a un utente di effettuare ricerche con un numero minimo di parole chiave, pur ottenendo risultati precisi.

I risultati effettivi presentati all'utente dipendono dalla confidenza dell'interpretazione della query. L'affidabilità si basa su diversi fattori, tra cui il punto in cui le stringhe di query compaiono 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 un livello di confidenza maggiore. La stessa stringa ("Tom Hanks") che appare in un paragrafo, anziché nel campo dello schema, può generare una confidenza minore. In caso di elevata affidabilità, all'utente vengono mostrati solo i risultati dell'interpretazione della query. Nel caso di un livello di confidenza minore, i risultati dell'interpretazione della query vengono uniti ai risultati di ricerca di parole chiave normali.

Interpretazione di query di esempio

Supponi di avere un'origine dati, ad esempio un database, contenente informazioni sui film. La Figura 1 mostra un esempio di query di ricerca e la conseguente interpretazione.

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

Data questa query di esempio, l'interpretazione della query fa 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 è presente principalmente in un campo specifico di origine dati "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 è presente principalmente nel contesto dei 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 abilitata 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 per assicurarti di poter trarre vantaggio dall'interpretazione delle query.

Attiva 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 i vantaggi 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 movie ha un objectDisplayLabel "Film".

  • La proprietà genre-Definition ha un operatorName di tipo " genre" e una "Category" displayLabel.

Questi nomi visualizzati consentono a Cloud Search di interpretare le seguenti query:

  • "film d'azione", "film con tipo di azione di genere" o "azione di genere film" vengono interpretati come genre:action object:movies.
  • "film di 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 date, numeri e ordinamento

Devi definire i valori lessThanOperatorName e greaterThanOperatorName, specificati in IntegerOperatorOptions, per tutte le proprietà numeriche e di data. Queste impostazioni abilitano interpretazioni numeriche e date automatiche. Inoltre, per abilitare le interpretazioni di ordinamento, imposta l'opzione isSortable per le proprietà numeriche e di data. Il seguente schema mostra come abilitare 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 fa riferimento all'uscita di un film nei cinema. 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, il termine "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, i "film usciti la scorsa settimana" vengono interpretati come objecttype: movies releasedafter:2019-3-10 releasedbefore:2019-3-16
  • "film 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 i film per data di uscita" filtra in base a "objecttype: movies" e i risultati presentati sarebbero ordinati in base alla data di uscita, con l'ordinamento predefinito in ordine crescente.

Abilita l'interpretazione di operatori riservati

Puoi anche utilizzare gli operatori integrati riservati type, before, after e objecttype per migliorare l'interpretazione delle query. Quando indicizza un documento, segui questi passaggi:

  1. Compila il campo updateTime in ItemMetadata per utilizzare gli operatori before e after. Queste impostazioni consentono a Cloud Search di eseguire 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" elencherà tutti i documenti di film d'azione con un tipo MIME application/mp4, application/mpeg4, application/x-shockwave-flash, video/ e application/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 del dominio (tutti gli utenti nel dominio possono accedervi).
    • Tutti i documenti sono pubblici origini dati (tutti coloro che hanno accesso all'ACL dell'origine 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 e severity con gli stessi nomi di 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 per priority o severity. Questi valori sono ambigui e il livello di confidenza è più basso.
  • Per impostazione predefinita, l'interpretazione delle query di Cloud Search riduce il caso 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 senza costi non vengono interpretate. Ad esempio, la query "severity:s0" non è 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 risultati ordinari (non interpretati, classificati in base alla pertinenza). Non sostituisce l'intera pagina dei risultati.