Struktur für eine optimale Abfrageinterpretation strukturieren

Die Funktion zur Abfrageinterpretation von Cloud Search interpretiert die Operatoren und Filter in einer Nutzerabfrage automatisch und wandelt sie in eine strukturierte, operatorbasierte Abfrage um. Bei der Abfrageinterpretation werden im Schema definierte Operatoren zusammen mit den indexierten Dokumenten verwendet, um die Bedeutung der Suchanfrage des Nutzers zu ermitteln. Mit dieser Funktion können Nutzer mit wenigen Suchbegriffen nach präzisen Ergebnissen suchen.

Die tatsächlichen Ergebnisse, die dem Nutzer angezeigt werden, hängen von der Zuverlässigkeit der Abfrageinterpretation ab. Die Konfidenz basiert auf verschiedenen Faktoren, unter anderem darauf, wo die Abfragestrings in indexierten Dokumenten vorkommen. Wenn ein String wie der Name des Schauspielers „Tom Hanks“ konsistent in einem Schemafeld namens actors erscheint, erhöht sich die Konfidenz. Derselbe String ("Tom Hanks") in einem Absatz statt eines Schemafelds kann zu einer geringeren Konfidenz führen. Bei einer hohen Konfidenz werden dem Nutzer nur Ergebnisse aus der Abfrageinterpretation angezeigt. Ist die Konfidenz geringer, werden die Ergebnisse der Abfrageinterpretation mit normalen Keyword-Suchergebnissen vermischt.

Beispiel für die Interpretation einer Abfrage

Angenommen, Sie haben eine Datenquelle wie eine Datenbank mit Informationen zu Filmen. Abbildung 1 zeigt ein Beispiel für eine Suchanfrage und die daraus resultierende Interpretation.

Übersicht über die Abfrageinterpretation
Abbildung 1. Abfrageinterpretation

In dieser Beispielabfrage führt die Abfrageinterpretation folgende Schritte aus:

  • Parst das Schema und stellt fest, dass die Objekte der obersten Ebene in der Datenquelle als objecttype:movies klassifiziert werden. Bei der Abfrageinterpretation ist jetzt bekannt, dass „movies“ in der Abfrage ein Objekttyp ist.

  • Sie scannt Dokumente in der Datenquelle in Verbindung mit dem Schema, um festzustellen, wo der String "Aktion" auftritt. Wenn der String hauptsächlich in einem bestimmten Datenquellenfeld des Typs "genre" vorkommt, ist die Abfrageinterpretation die Konfidenz, dass "action" ein Attributwert für das Attribut "genre" ist, wie im Schema definiert. Tritt der String hauptsächlich im Kontext von Inhaltsabsätzen auf, nimmt das Konfidenzniveau der Abfrageinterpretation ab.

Die resultierende Abfrageinterpretation lautet:

  actor:“tom hanks” genre:action objecttype:movies

Die Abfrageinterpretation wird automatisch und ohne zusätzlichen Aufwand für alle Cloud Search-Kunden aktiviert. Für eine optimale Abfrageinterpretation sollten Sie das Schema jedoch gemäß der Anleitung in diesem Dokument strukturieren.

Das Schema strukturieren, um die Abfrageinterpretation zu unterstützen

Sie sollten Ihr Schema so strukturieren, dass Sie von der Abfrageinterpretation profitieren können.

Interpretationen von Anzeigenamen aktivieren

Bei der Abfrageinterpretation in Cloud Search werden objectDefinitions und propertyDefinitions in einem Schema verwendet, um die Abfrage eines Nutzers zu interpretieren und die Ergebnisse zu optimieren. Damit Sie die Vorteile dieser Schemaelemente voll ausschöpfen können, sollten Sie intuitive Anzeigenamen mit displayLabel für Attributnamen, objectDisplayLabel für Objektnamen und operatorName für Operatoren erstellen.

Das folgende Schema zeigt intuitive Anzeigenamen für ein Filmobjekt:

{
  "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"
        }
      },
      ...
      ]
    }
  ]
}

Im vorherigen Beispiel gilt:

  • Die Definition des Filmobjekts enthält einen „Film“-objectDisplayLabel.

  • Die propertyDefinition „genre“ hat ein „genre“ operatorName und eine „Category“ displayLabel.

Mithilfe dieser Anzeigenamen kann Cloud Search die folgenden Abfrageinterpretationen vornehmen:

  • „Actionfilme“, „Genre-Action-Filme“ oder „Film-Genre-Action“ werden als genre:action object:movies interpretiert.
  • „Filme mit Action oder Thriller“ wird als objecttype:movies genre:(action OR thriller) interpretiert.
  • "Actionfilm" oder "Actionfilme" wird als genre:action objecttype:movies interpretiert.
  • „Comedy-Kategorie Filme“ wird als genre:comedy objecttype:movies interpretiert.

Interpretationen für Datum, numerische Werte und Sortierung aktivieren

Definieren Sie lessThanOperatorName und greaterThanOperatorName, die in IntegerOperatorOptions angegeben sind, für alle Datums- und numerischen Attribute. Mit diesen Einstellungen wird die automatische Interpretation von Datum und Ziffern ermöglicht. Damit die Interpretation der Sortierung möglich ist, legen Sie außerdem die Option isSortable für Datums- und numerische Attribute fest. Das folgende Schema zeigt, wie diese Optionen aktiviert werden.

{
  "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"
            }
          }
        }
      ]
    }
  ]
}

Im vorherigen Beispiel gilt:

  • Die numerische Eigenschaft runtime bezieht sich auf die Länge eines Films. Für dieses Attribut sind runtimelessthan und runtimegreaterthan festgelegt.
  • Die Datumseigenschaft releaseDate gibt an, wann ein Film in den Kinos veröffentlicht wird. Für dieses Attribut sind releasedbefore und releasedafter festgelegt.

Mit diesen Einstellungen kann Cloud Search die folgenden Abfragen interpretieren:

  • Wenn das Jahr 2019 ist, werden „In diesem Jahr veröffentlichte Filme“ als objecttype: movies releasedafter:2019-1-1 releasedbefore:2019-12-31 interpretiert.
  • Wenn es sich um die dritte Woche im März handelt, werden „der letzten Woche veröffentlichte Filme“ als objecttype: movies releasedafter:2019-3-10 releasedbefore:2019-3-16 interpretiert
  • „Filme mit einer Laufzeit von weniger als 90“ wird als objjecttype: movies runtimelessthan:90 interpretiert.
  • Angenommen, das Jahr ist 2019, „Filme, die in diesem Jahr veröffentlicht wurden und länger als 120 Jahre dauern“ werden als releasedafter:2019-1-1 releasedbefore:2019-12-31 objecttype:movies runtimegreaterthan:120 interpretiert.
  • Mit „filmen nach Veröffentlichungsdatum sortieren“ würde nach „objecttype: movies“ gefiltert. Die Ergebnisse werden dann nach dem Veröffentlichungsdatum sortiert. Die Standardsortierreihenfolge ist dabei aufsteigend.

Interpretation reservierter Operatoren aktivieren

Sie können auch die reservierten integrierten Operatoren type, before, after und objecttype verwenden, um die Abfrageinterpretation zu verbessern. Gehen Sie beim Indexieren eines Dokuments so vor:

  1. Füllen Sie das Feld updateTime in ItemMetadata aus, um die Operatoren before und after zu verwenden. Mit diesen Einstellungen kann Cloud Search die folgenden Abfrageinterpretationen vornehmen:

    • Mit "Filme aus letzter Woche" werden alle Filme aufgelistet, die in der vorherigen Woche im Index aktualisiert wurden.
    • Mit der Option "Filme vor Januar 2019" werden alle Filme aufgelistet, die vor Januar 2019 indexiert wurden.
  2. Füllen Sie das Feld mimeType in ItemMetadata aus, um die automatische Typerkennung zu verwenden. Mit der Abfrage „Actionvideos“ werden alle Aktionsfilmdokumente mit dem MIME-Typ application/mp4, application/mpeg4, application/x-shockwave-flash, video/ und application/vnd.google-apps.video aufgelistet.

Einschränkungen bei der Abfrageinterpretation

Für die Funktion zur Interpretation von Abfragen gelten die folgenden Einschränkungen.

  • Die Abfrageinterpretation funktioniert nur für die folgenden Datenquellen-ACLs:
    • Alle Dokumente sind in der Domain öffentlich, d. h., jeder Nutzer in der Domain hat Zugriff.
    • Alle Dokumente sind öffentlich zugänglich, d. h. jeder, der Zugriff auf die Datenquellen-ACL hat.
    • Die Mehrheit der Dokumente in der Datenquelle hat dieselbe ACL (alle Dokumente übernehmen die ACL von demselben Containerelement), ohne zusätzliche Leser definiert zu haben.
  • Wenn mehrere Schemaoperatoren denselben Wert haben, hängt die Interpretation dieses Werts in einem Operator-Intent für eine Abfrage vom Konfidenzfaktor insgesamt ab, der vom Abfrageinterpretationssystem zurückgegeben wird. Angenommen, Sie haben die Attribute priority und severity mit denselben Operatornamen, die im Schema definiert sind. Angenommen, beide Operatoren können die Werte 0, 1, 2 oder 3 haben. In diesem Beispiel kann sich „0“ in einer Abfrage auf den Operatorwert für priority oder severity beziehen. Diese Werte sind mehrdeutig und das Konfidenzniveau ist niedriger.
  • Standardmäßig senkt die Cloud Search-Abfrageinterpretation die Groß-/Kleinschreibung von Feldwerten beim Interpretieren der Abfrage. Hiervon ausgenommen sind Textoperatoren, die mit exactMatchWithOperator-Optionen definiert wurden.
  • Der Operator source wird in Abfragen nicht unterstützt.
  • Abfragen, in denen operatorbasierte Begriffe und kostenlose Textbegriffe kombiniert werden, werden nicht interpretiert. So wird beispielsweise die Abfrage "p0 Priority cases severity:s0" nicht unterstützt, da "p0 Priority cases" (Fälle mit Priorität P0) ein kostenloser Textbegriff ist, während "severity:s0" ein operatorbasierter Begriff ist.
  • Bei der Strategie der Abfrageinterpretation werden die interpretierten Ergebnisse immer mit normalen (nicht interpretierten, nach Relevanz bewerteten) Ergebnissen zusammengeführt. Die Ergebnisse werden nicht ganzseitig ersetzt.