Schema für eine optimale Abfrageauswertung strukturieren

Die Funktion Suchanfrage interpretieren in Cloud Search interpretiert automatisch die Operatoren und Filter in der Suchanfrage eines Nutzers und wandelt diese Elemente in eine strukturierte, operatorbasierte Suchanfrage um. Bei der Interpretation von Anfragen werden Operatoren verwendet, die im Schema definiert sind, sowie die indexierten Dokumente, um die Bedeutung der Nutzeranfrage zu ermitteln. Mit dieser Funktion können Nutzer mit minimalen Keywords suchen und trotzdem präzise Ergebnisse erhalten.

Die tatsächlichen Ergebnisse, die dem Nutzer präsentiert werden, hängen vom Vertrauen in die Interpretation der Anfrage ab. Die Konfidenz basiert auf mehreren Faktoren, unter anderem darauf, wo die Suchanfrage-Strings in indexierten Dokumenten erscheinen. Wenn ein String wie der Name des Schauspielers „Tom Hanks“ konsistent in einem Schemabereich namens actors vorkommt, führt das zu einem höheren Konfidenzwert. Wenn derselbe String („Tom Hanks“) in einem Absatz statt in einem Schemabereich vorkommt, kann dies zu einer geringeren Konfidenz führen. Bei hoher Konfidenz werden dem Nutzer nur Ergebnisse aus der Abfrageinterpretation angezeigt. Bei geringerer Zuverlässigkeit werden die Ergebnisse der Anfrageninterpretation mit normalen Keyword-Suchergebnissen kombiniert.

Beispiel für die Interpretation einer Anfrage

Angenommen, Sie haben eine Datenquelle, z. B. eine Datenbank, die Informationen zu Filmen enthält. Abbildung 1 zeigt eine Beispielsuchanfrage und die entsprechende Interpretation.

Übersicht über die Abfrageinterpretation
Abbildung 1. Interpretation von Abfragen

Bei dieser Beispielabfrage wird Folgendes ausgeführt:

  • Das Schema wird analysiert und es wird festgestellt, dass die Objekte der obersten Ebene in der Datenquelle als objecttype:movies klassifiziert werden. Die Abfrageinterpretation weiß jetzt, dass „Filme“ in der Anfrage ein Objekttyp ist.

  • Durchsucht Dokumente in der Datenquelle in Verbindung mit dem Schema, um festzustellen, wo der String „action“ vorkommt. Wenn der String hauptsächlich in einem bestimmten Datenquellenfeld für das Genre vorkommt, ist die Abfrageinterpretation zuversichtlich, dass „action“ ein Attributwert für das Attribut „genre“ ist, wie im Schema definiert. Wenn der String hauptsächlich im Kontext von Absätzen mit Inhalten vorkommt, sinkt das Konfidenzniveau der Abfrageinterpretation.

Die resultierende Abfrageinterpretation lautet:

  actor:tom hanks genre:action objecttype:movies

Die Suchanfrage-Interpretation ist für alle Cloud Search-Kunden automatisch aktiviert. Für eine optimale Interpretation von Anfragen sollten Sie Ihr Schema jedoch gemäß der Anleitung in diesem Dokument strukturieren.

Schema so strukturieren, dass die Interpretation von Anfragen unterstützt wird

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

Interpretationen von Anzeigenamen aktivieren

Bei der Interpretation von Cloud Search-Anfragen werden die objectDefinitions und propertyDefinitions in einem Schema verwendet, um die Anfrage eines Nutzers zu interpretieren und die Ergebnisse zu optimieren. Um den Nutzen dieser Schemaelemente zu maximieren, sollten Sie intuitive Anzeigenamen mit displayLabel für Eigenschaftsnamen, 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 Filmobjektdefinition enthält ein objectDisplayLabel für „Film“.

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

Diese Anzeigenamen ermöglichen Cloud Search die folgenden Interpretationen von Anfragen:

  • „Actionfilme“, „Filme vom Typ Action“ oder „Filme Genre Action“ werden als genre:action object:movies interpretiert.
  • „Filme mit dem Genre ‚Action‘ oder ‚Thriller‘“ wird als objecttype:movies genre:(action OR thriller) interpretiert.
  • „Actionfilm“ oder „Actionfilme“ wird als genre:action objecttype:movies interpretiert.
  • „comedy category movies“ wird als genre:comedy objecttype:movies interpretiert.

Interpretation von Datumsangaben, Zahlen und Sortierungen aktivieren

Sie sollten die in IntegerOperatorOptions angegebenen Attribute lessThanOperatorName und greaterThanOperatorName für alle Datums- und numerischen Attribute definieren. Diese Einstellungen ermöglichen die automatische Interpretation von Datumsangaben und Zahlen. Wenn Sie Sortierinterpretationen aktivieren möchten, legen Sie die Option isSortable für Datums- und numerische Properties fest. Das folgende Schema zeigt, wie Sie diese Optionen aktivieren.

{
  "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 Property runtime bezieht sich auf die Länge eines Films. Die Werte runtimelessthan und runtimegreaterthan sind für diese Property festgelegt.
  • Das Datum-Attribut releaseDate bezieht sich auf das Datum, an dem ein Film im Kino veröffentlicht wird. Die releasedbefore und releasedafter sind für diese Property festgelegt.

Mit diesen Einstellungen kann Cloud Search die folgenden Abfragen interpretieren:

  • Wenn wir davon ausgehen, dass das Jahr 2019 ist, wird „Filme, die dieses Jahr veröffentlicht wurden“ als objecttype: movies releasedafter:2019-1-1 releasedbefore:2019-12-31 interpretiert.
  • Angenommen, es ist die dritte Woche im März. Dann wird „Filme, die letzte Woche veröffentlicht wurden“ 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. Dann wird „Filme, die dieses Jahr veröffentlicht wurden und länger als 120 Minuten sind“ als releasedafter:2019-1-1 releasedbefore:2019-12-31 objecttype:movies runtimegreaterthan:120 interpretiert.
  • Bei „Filme nach Veröffentlichungsdatum sortieren“ wird nach „objecttype: movies“ gefiltert und die Ergebnisse werden nach dem Veröffentlichungsdatum sortiert. Die Standardsortierreihenfolge ist aufsteigend.

Reservierte Operatorinterpretation aktivieren

Sie können auch die reservierten integrierten Operatoren type, before, after und objecttype verwenden, um die Interpretation von Anfragen 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 Suchanfragen interpretieren:

    • „Filme aus der letzten Woche“ würde alle Filme auflisten, die in der Vorwoche im Index aktualisiert wurden.
    • „Filme vor Januar 2019“ listet alle Filme auf, die vor Januar 2019 indexiert wurden.
  2. Füllen Sie das Feld mimeType in ItemMetadata aus, um die automatische Erkennung des Typs zu verwenden. Bei der Anfrage „action videos“ werden alle Actionfilmdokumente 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 Abfrageinterpretation gelten die folgenden Einschränkungen.

  • Die Abfrageinterpretation funktioniert nur für die folgenden ACLs für Datenquellen:
    • Alle Dokumente sind für die Domain öffentlich (jeder in der Domain kann darauf zugreifen).
    • Alle Dokumente sind öffentlich für die Datenquelle (jeder, der Zugriff auf die ACL der Datenquelle hat).
    • Die meisten Dokumente in der Datenquelle haben dieselbe ACL (alle Dokumente übernehmen die ACL vom selben Container-Element) und es sind keine zusätzlichen Leser definiert.
  • Wenn mehrere Schemaoperatoren denselben Wert haben, hängt die Interpretation dieses Werts in Bezug auf die Absicht eines Operators für eine Anfrage vom gesamten Vertrauensfaktor ab, der vom System zur Interpretation von Anfragen 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 Anfrage auf den Operatorwert für priority oder severity beziehen. Diese Werte sind mehrdeutig und das Konfidenzniveau ist niedriger.
  • Standardmäßig wird bei der Abfrageinterpretation in Cloud Search die Groß-/Kleinschreibung von Feldwerten nicht berücksichtigt, außer bei Textoperatoren, die mit exactMatchWithOperator-Optionen definiert sind.
  • Der Operator source wird in Abfragen nicht unterstützt.
  • Abfragen, in denen operatorbasierte Begriffe und Freitextbegriffe kombiniert werden, werden nicht interpretiert. Die Anfrage „p0 priority cases severity:s0“ wird beispielsweise nicht unterstützt, da „p0 priority cases“ ein Freitextbegriff ist, während „severity:s0“ ein operatorbasierter Begriff ist.
  • Bei der Strategie zur Abfrageinterpretation werden die interpretierten Ergebnisse immer mit normalen (nicht interpretierten, nach Relevanz sortierten) Ergebnissen kombiniert. Es werden nicht alle Ergebnisse auf einer Seite ersetzt.