Strutturare uno schema per un'interpretazione ottimale delle query

La funzionalità di interpretazione delle query di Cloud Search interpreta automaticamente il operatori e filtri nella query di un utente e li converte in una query strutturata basata su operatori. L'interpretazione delle query utilizza operatori definiti nello schema, insieme ai documenti indicizzati, per ricavare la della query. Questa funzionalità consente a un utente di cercare parole chiave, pur ottenendo risultati precisi.

I risultati effettivi presentati all'utente dipendono dalla confidenza dell'interpretazione della query. La confidenza si basa su diversi fattori: incluso il punto in cui le stringhe di query vengono visualizzate nei documenti indicizzati. Una stringa, ad esempio come nome dell'attore "Tom Hanks", apparendo costantemente in un campo dello schema denominato actors genera una maggiore affidabilità. La stessa stringa ("Tom Hanks"), che appare all'interno di un paragrafo, anziché in un campo dello schema, può generano una minore confidenza. In caso di elevata affidabilità, i risultati dall'interpretazione della query. Nel caso di modelli più deboli di confidenza, i risultati dell'interpretazione della query vengono uniti a una nei risultati di ricerca delle parole chiave.

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 o l'interpretazione letterale.

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

Sulla base di questa query di esempio, l'interpretazione della query svolge 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.

  • Scansiona i documenti nell'origine dati, insieme allo schema, per determinare dove la stringa "action" . Se la stringa si verifica principalmente di un "genere" specifico campo dell'origine dati, poi l'interpretazione della query ha la certezza che "azione" è un valore della proprietà "gender" come definito nello schema. Se la stringa si verifica principalmente nel contesto di paragrafi di contenuto, 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 di Cloud Search senza ulteriori interventi. Tuttavia, per un'interpretazione ottimale delle query, strutturare lo schema seguendo le istruzioni riportate in questo documento.

Strutturare lo schema per supportare l'interpretazione delle query

Struttura lo schema per garantire puoi 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 che consentono di analizzare i dati e visualizzare i risultati. Per massimizzare i vantaggi di questi elementi dello schema, devi creare nomi visualizzati intuitivi con 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 "gender" e una "Category" displayLabel.

Questi nomi visualizzati consentono a Cloud Search di eseguire la seguente query interpretazioni:

  • "film d'azione", "film con tipo di azione di genere" o "film di genere d'azione" sono interpretato 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" è 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 gli attributi lessThanOperatorName e greaterThanOperatorName, specificato in IntegerOperatorOptions, per tutte le date e le proprietà numeriche. Queste impostazioni consentono di attivare interpretazioni numeriche. Inoltre, per abilitare le interpretazioni dell'ordinamento, imposta l'opzione isSortable per le proprietà numeriche e di data. Le seguenti che 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. La runtimelessthan e runtimegreaterthan sono impostati per questa proprietà.
  • La proprietà data releaseDate fa riferimento all'uscita di un film nel 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" sono interpretato 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 alla data di uscita con l'ordinamento predefinito in ordine crescente.

Abilita l'interpretazione di operatori riservati

Puoi anche utilizzare l'opzione integrata type, before, after e objecttype prenotata per migliorare l'interpretazione delle query. Quando indicizza un documento, esegui la seguenti:

  1. Compila il campo updateTime nel ItemMetadata per utilizzare gli operatori before e after. Questi consentono a Cloud Search di eseguire le seguenti interpretazioni delle query:

    • "film della scorsa settimana" elenca tutti i film aggiornati nel l'indicizzazione della settimana precedente.
    • "film prima di gennaio 2019" elenca tutti i film indicizzati in precedenza Gennaio 2019.
  2. Compila il campo mimeType in ItemMetadata per utilizzare il rilevamento automatico di di testo. Una query "video d'azione" elencherà tutti i documenti di film d'azione con un mime tipo di 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 origini dati pubbliche (tutti coloro che hanno accesso all'origine dati) ACL).
    • La maggior parte dei documenti nell'origine dati ha lo stesso ACL (tutti i documenti eredita ACL dallo stesso elemento container) senza lettori aggiuntivi definiti.
  • Se più operatori di schema hanno lo stesso valore, l'interpretazione di quel valore all'intent di un operatore per una query dipende dalla confidenza complessiva fattore restituito dal sistema di interpretazione delle query. Ad esempio, supponiamo che hanno le proprietà priority e severity 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 per priority o severity. Questi valori sono ambigui e il livello di confidenza è in basso.
  • Per impostazione predefinita, l'interpretazione delle query di Cloud Search riduce le maiuscole e le minuscole durante l'interpretazione della query, ad eccezione degli operatori di testo definiti con exactMatchWithOperator.
  • L'operatore source non è supportato nelle query.
  • Le query che combinano termini basati su operatori e termini di testo libero non vengono viene interpretata correttamente. Ad esempio, la query "p0 Priority case gravità:s0" non poiché "casi con priorità p0" è un termine di testo libero mentre "severity:s0" è un termine basato su operatore.
  • La strategia di interpretazione delle query combina sempre i risultati interpretati con risultati ordinari (non interpretati, con ranking per pertinenza). Non esegue un sostituzione della pagina dei risultati.