Schema erstellen und registrieren

Ein Google Cloud Search-Schema ist eine JSON-Struktur, in der Objekte, Attribute und Optionen für das Indexieren und Abfragen von Daten definiert sind. Ihr Inhaltsconnector verwendet das registrierte Schema, um Repository-Daten zu strukturieren und zu indexieren.

Sie erstellen ein Schema, indem Sie der API ein JSON-Schemaobjekt bereitstellen. Sie müssen für jedes Repository ein Schema registrieren, bevor Sie Daten indexieren.

In diesem Dokument werden die Grundlagen der Schemaerstellung behandelt. Informationen zur Optimierung der Suchfunktionen finden Sie unter Suchqualität verbessern.

Schema erstellen

So erstellen Sie ein Cloud Search-Schema:

  1. Zu erwartendes Nutzerverhalten bestimmen
  2. Datenquelle initialisieren
  3. Objekte definieren
  4. Objekt-Attribute definieren
  5. Schema registrieren
  6. Daten indexieren
  7. Schema testen
  8. Schema anpassen

Zu erwartendes Nutzerverhalten bestimmen

Wenn Sie wissen, wie Nutzer suchen, können Sie Ihre Schemastrategie besser definieren. Bei einer Filmdatenbank suchen Nutzer möglicherweise nach „Filme mit Robert Redford“. Ihr Schema muss Abfragen für Filme mit einem bestimmten Schauspieler unterstützen.

So richten Sie Ihr Schema am Nutzerverhalten aus:

  1. Analysieren Sie unterschiedliche Suchabfragen von verschiedenen Nutzern.
  2. Identifizieren Sie logische Datensätze oder Objekte, z. B. einen „Film“.
  3. Identifizieren Sie Attribute wie Titel oder Veröffentlichungsdatum.
  4. Identifizieren Sie gültige Werte für Attribute, z. B. „Jäger des verlorenen Schatzes“.
  5. Bestimmen Sie die Sortier- und Rankinganforderungen, z. B. chronologische Reihenfolge oder Publikumsbewertungen.
  6. Identifizieren Sie Kontextattribute wie die Berufsbezeichnung, um die Vorschläge für die automatische Vervollständigung zu verbessern.
  7. Listen Sie diese Objekte, Attribute und Beispielwerte auf. Verwenden Sie diese Liste, um Operatoroptionen zu definieren.

Datenquelle initialisieren

Eine Datenquelle stellt indexierte Repository-Daten dar, die in Google Cloud gespeichert sind. Weitere Informationen finden Sie unter Integration von Drittanbietern. Wenn ein Nutzer auf ein Ergebnis klickt, wird er von Cloud Search über die URL aus der Indexierungsanforderung zum Element weitergeleitet.

Objekte definieren

Das Objekt ist die Grundeinheit eines Schemas. Logische Strukturen wie „Film“ oder „Person“ sind Objekte. Jedes Objekt hat Attribute wie Titel, Dauer oder Name.

Grafik von Schemaverbindungen zwischen Entitäten
Abbildung 1. Beispielschema mit zwei Objekten und einem Unterobjekt.

Ein Schema ist eine Liste von Objektdefinitionen im objectDefinitions Tag.

{
  "objectDefinitions": [
    { "name": "movie" },
    { "name": "person" }
  ]
}

Verwenden Sie für jedes Objekt eindeutige Namen, z. B. movie. Der Schemadienst verwendet diese Namen als Schlüssel. Weitere Informationen finden Sie unter ObjectDefinition.

Objekt-Attribute definieren

Definieren Sie Attribute wie Titel und Veröffentlichungsdatum im Abschnitt propertyDefinitions. Verwenden Sie options für freshnessOptions (Ranking) und displayOptions (UI-Labels).

{
  "objectDefinitions": [{
    "name": "movie",
    "propertyDefinitions": [
      {
        "name": "movieTitle",
        "isReturnable": true,
        "textPropertyOptions": {
          "retrievalImportance": { "importance": "HIGHEST" },
          "operatorOptions": { "operatorName": "title" }
        },
        "displayOptions": { "displayLabel": "Title" }
      },
      {
        "name": "releaseDate",
        "isReturnable": true,
        "isSortable": true,
        "datePropertyOptions": {
          "operatorOptions": {
            "operatorName": "released",
            "lessThanOperatorName": "releasedbefore",
            "greaterThanOperatorName": "releasedafter"
          }
        }
      }
    ]
  }]
}

Eine PropertyDefinition enthält:

  • Einen name-String.
  • Typunabhängige Optionen (z.B. isReturnable).
  • Einen Typ und typspezifische Optionen (z.B. textPropertyOptions).
  • operatorOptions für Suchoperatoren.
  • displayOptions für UI-Labels.

Sie können Attributnamen für verschiedene Objekte wiederverwenden. movieTitle kann beispielsweise sowohl in einem movie Objekt als auch in der Filmografie eines person Objekts vorkommen.

Typunabhängige Optionen hinzufügen

PropertyDefinition enthält boolesche Optionen zum Konfigurieren der Suchfunktionen für ein Attribut, unabhängig vom Typ. Diese Optionen sind standardmäßig auf false gesetzt und müssen auf true gesetzt werden, damit sie verwendet werden können.

  • isReturnable: Legen Sie diese Option auf true fest, wenn die Attributdaten in Suchergebnissen über die Query API zurückgegeben werden sollen. Nicht rückgabefähige Attribute können für die Suche oder das Ranking verwendet werden, ohne in den Ergebnissen angezeigt zu werden.
  • isRepeatable: Legen Sie diese Option auf true fest, wenn das Attribut mehrere Werte haben kann. Ein Film hat beispielsweise ein Veröffentlichungsdatum, aber mehrere Schauspieler.
  • isSortable: Legen Sie diese Option auf true fest, wenn das Attribut zum Sortieren verwendet werden kann. Diese Option kann nicht true sein, wenn isRepeatable true ist oder wenn sich das Attribut in einem wiederholbaren Unterobjekt befindet.
  • isFacetable: Legen Sie diese Option auf true fest, wenn das Attribut zum Generieren von Facetten verwendet werden kann (Attribute, mit denen Suchergebnisse verfeinert werden).
    • Dazu muss isReturnable auf true gesetzt sein.
    • Wird nur für Attribute vom Typ „Aufzählung“, „Bool“ und „Text“ unterstützt.
  • isWildcardSearchable: Legen Sie diese Option auf true fest, damit Nutzer Platzhaltersuchen für dieses Attribut ausführen können. Diese Option ist nur für Textattribute verfügbar und ihr Verhalten hängt von der Einstellung exactMatchWithOperator ab:
    • Wenn exactMatchWithOperator auf true gesetzt ist, wird der Textwert als einzelnes Token behandelt. Eine Abfrage wie science-* stimmt mit dem Wert science-fiction überein.
    • Wenn exactMatchWithOperator auf false gesetzt ist, wird der Textwert in Tokens zerlegt. Eine Abfrage wie sci* oder fi* stimmt mit science-fiction überein, science-* jedoch nicht.

Typ definieren

Legen Sie den Datentyp fest, indem Sie das entsprechende Objekt für die Attributoptionen definieren (z.B. textPropertyOptions). Verwenden Sie Aufzählungen (enumPropertyOptions), wenn Sie alle möglichen Werte kennen. Ein Attribut kann nur einen Datentyp haben.

Operatoroptionen festlegen

operatorOptions beschreiben, wie ein Attribut als Suchoperator funktioniert.

Jedes operatorOptions benötigt einen operatorName (z.B. title). Dies ist der Parameter, den Nutzer in Abfragen eingeben (z.B. title:titanic). Verwenden Sie intuitive Namen und machen Sie sie für Nutzer sichtbar.

Sie können einen operatorName für Attribute desselben Typs freigeben. Bei Abfragen mit diesem Namen werden Ergebnisse aus allen übereinstimmenden Attributen abgerufen.

Sortierbare Attribute können lessThanOperatorName und greaterThanOperatorName für Vergleichsabfragen enthalten. Für Textattribute kann exactMatchWithOperator verwendet werden, um den gesamten Wert als einzelnes Token zu behandeln.

Anzeigeoptionen hinzufügen

Der optionale Abschnitt displayOptions enthält ein displayLabel. Dies ist ein nutzerfreundliches Label, das in den Suchergebnissen angezeigt wird.

Operatoren zum Filtern von Vorschlägen hinzufügen

Verwenden Sie suggestionFilteringOperators[], um ein Attribut zu definieren, das Vorschläge für die automatische Vervollständigung filtert (z.B. Filmvorschläge nach dem bevorzugten Genre eines Nutzers). Sie können nur einen Vorschlagsfilter definieren.

Schema registrieren

Registrieren Sie Ihr Schema mit der Datenquellen-ID beim Schemadienst. Geben Sie eine UpdateSchema Anforderung aus:

PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema

Verwenden Sie validateOnly: true, um Ihr Schema zu testen, ohne es zu registrieren.

Daten indexieren

Nach der Registrierung können Sie die Datenquelle mithilfe von Index -Aufrufen füllen, in der Regel mit einem Connector.

Beispiel für eine Indexierungsanforderung:

{
  "name": "datasource/<data_source_id>/items/titanic",
  "metadata": {
    "title": "Titanic",
    "objectType": "movie"
  },
  "structuredData": {
    "object": {
      "properties": [{
        "name": "movieTitle",
        "textValues": { "values": ["Titanic"] }
      }]
    }
  },
  "itemType": "CONTENT_ITEM"
}

Schema testen

Testen Sie vor der Produktion mit einem kleinen Repository. Erstellen Sie eine ACL, die die Ergebnisse auf einen Testnutzer beschränkt.

  • Allgemeine Abfrage: Suchen Sie nach einem String (z.B. „titanic“), um alle übereinstimmenden Elemente zu sehen.
  • Operatorabfrage: Verwenden Sie einen Operator (z.B. actor:Zane), um die Ergebnisse zu beschränken.

Schema anpassen

Behalten Sie das Nutzerfeedback im Blick und passen Sie Ihr Schema an. Möglicherweise indexieren Sie neue Felder oder benennen Operatoren um, damit sie intuitiver sind.

Nach einer Schemaänderung neu indexieren

Bei Änderungen an folgenden Elementen ist keine Neuindexierung erforderlich:

  • Operatornamen
  • Numerische Grenzwerte
  • Sortiertes Ranking
  • Optionen für Aktualität oder Anzeige

In folgenden Fällen müssen Sie neu indexieren:

  • Hinzufügen oder Entfernen von Attributen oder Objekten
  • Ändern von isReturnable, isFacetable oder isSortable in true
  • Markieren eines Attributs als isSuggestable

Nicht zulässige Attributänderungen

Änderungen, die den Index beschädigen oder zu inkonsistenten Ergebnissen führen, sind nicht zulässig. Dazu gehören:

  • Datentyp oder Name des Attributs
  • Einstellungen für exactMatchWithOperator oder retrievalImportance

Komplexe Schemaänderungen vornehmen

Wenn Sie eine nicht zulässige Änderung vornehmen möchten, migrieren Sie Attribute aus einer alten Definition in eine neue:

  1. Fügen Sie dem Schema ein neues Attribut mit einem anderen Namen hinzu.
  2. Registrieren Sie das Schema mit den neuen und alten Attributen.
  3. Füllen Sie den Index nur mit dem neuen Attribut auf.
  4. Löschen Sie das alte Attribut aus dem Schema.
  5. Aktualisieren Sie Ihren Abfragecode, um den neuen Attributnamen zu verwenden.

In Cloud Search werden gelöschte Elemente 30 Tage lang gespeichert, um Probleme bei der Wiederverwendung zu vermeiden.

Größenbeschränkungen

  • Maximal 10 Objekte der obersten Ebene
  • Maximale Tiefe von 10 Ebenen
  • Maximal 1.000 Felder pro Objekt (einschließlich verschachtelter Felder)

Nächste Schritte

  1. Eine Suchoberfläche erstellen
  2. Suchqualität verbessern.
  3. Schema für optimale Abfrageinterpretation strukturieren.
  4. Synonyme definieren.