Ein Google Cloud Search-Schema ist eine JSON-Struktur, in der Objekte, Attribute und Optionen zum Indexieren und Abfragen von Daten definiert sind. Ihr Inhaltsconnector verwendet das registrierte Schema, um Repository-Daten zu strukturieren und zu indexieren.
Ein Schema erstellen Sie, indem Sie in der API ein JSON-Schemaobjekt bereitstellen. Sie müssen ein Schema für jedes Repository 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:
- Zu erwartendes Nutzerverhalten bestimmen
- Datenquelle initialisieren
- Objekte definieren
- Objekt-Attribute definieren
- Schema registrieren
- Daten indexieren
- Schema testen
- Schema anpassen
Zu erwartendes Nutzerverhalten bestimmen
Wenn Sie antizipieren, wie Nutzer suchen, können Sie auf dieser Grundlage die Strategie für Ihr Schema festlegen. Bei einer Filmdatenbank könnten Nutzer z. B. nach „Filme mit Robert Redford“ suchen. Ihr Schema muss Abfragen für Filme mit einem bestimmten Schauspieler unterstützen.
So passen Sie Ihr Schema an das Nutzerverhalten an:
- Analysieren Sie unterschiedliche Suchanfragen von verschiedenen Nutzern.
- Identifizieren Sie logische Datasets oder Objekte, z. B. einen „Film“.
- Attribute wie Titel oder Veröffentlichungsdatum identifizieren.
- Gültige Werte für Properties wie „Jäger des verlorenen Schatzes“ identifizieren.
- Bestimmen Sie die Sortier- und Rankinganforderungen, z. B. chronologische Reihenfolge oder Zuschauerbewertungen.
- Kontextbezogene Eigenschaften wie die Jobrolle identifizieren, um Vorschläge zur automatischen Vervollständigung zu verbessern.
- Listen Sie diese Objekte, Attribute und Beispielwerte auf. Verwenden Sie diese Liste, um Operatoroptionen festzulegen.
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 Indexierungsanfrage 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.
Ein Schema ist eine Liste von Objektdefinitionen im Tag objectDefinitions.
{
"objectDefinitions": [
{ "name": "movie" },
{ "name": "person" }
]
}
Verwenden Sie für jedes Objekt einen eindeutigen Namen, z. B. movie. Der Schemadienst verwendet diese Namen als Schlüssel. Weitere Informationen finden Sie unter ObjectDefinition.
Objektattribute 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:
- Ein
name-String. - Typunabhängige Optionen (z.B.
isReturnable). - Ein Typ und typspezifische Optionen (z.B.
textPropertyOptions). operatorOptionsfür Suchoperatoren.displayOptionsfür UI-Labels.
Sie können Attributnamen für verschiedene Objekte wiederverwenden. Beispielsweise kann movieTitle sowohl in einem movie-Objekt als auch in der Filmografie eines person-Objekts vorkommen.
Typunabhängige Optionen hinzufügen
Die PropertyDefinition enthält boolesche Optionen zum Konfigurieren der Suchfunktion für eine Property, unabhängig von ihrem Typ. Diese Optionen sind standardmäßig auf false festgelegt und müssen auf true gesetzt werden, damit sie verwendet werden können.
isReturnable: Auftruegesetzt, 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 zu erscheinen.isRepeatable: Auftruefestlegen, wenn das Attribut mehrere Werte haben kann. Beispielsweise hat ein Film nur ein Veröffentlichungsdatum, es können jedoch mehrere Schauspieler in ihm mitspielen.isSortable: Legen Sietruefest, wenn das Attribut zum Sortieren verwendet werden kann. Darf nichttruesein, wennisRepeatabletrueist oder wenn sich das Attribut in einem wiederholbaren Unterobjekt befindet.isFacetable: Auftruesetzen, wenn die Property zum Generieren von Facetten (Attributen zum Verfeinern von Suchergebnissen) verwendet werden kann.- Erfordert, dass
isReturnabletrueist. - Wird nur für Attribute vom Typ „Aufzählung“, „Bool“ und „Text“ unterstützt.
- Erfordert, dass
isWildcardSearchable: Auftruefestgelegt, damit Nutzer Platzhaltersuchen für diese Property ausführen können. Diese Option ist nur für Texteigenschaften verfügbar. Das Verhalten hängt von der EinstellungexactMatchWithOperatorab:- Wenn
exactMatchWithOperatorgleichtrueist: Der Textwert wird als einzelnes Token behandelt. Eine Abfrage wiescience-*stimmt mit dem Wertscience-fictionüberein. - Wenn
exactMatchWithOperatorden Wertfalsehat, wird der Textwert in Tokens zerlegt. Eine Anfrage wiesci*oderfi*stimmt mitscience-fictionüberein,science-*jedoch nicht.
- Wenn
Typ definieren
Legen Sie den Datentyp fest, indem Sie das entsprechende Attributoptions-Objekt definieren (z.B.
textPropertyOptions). Verwenden Sie Enums (enumPropertyOptions), wenn Sie alle möglichen Werte kennen. Eine Property kann nur einen Datentyp haben.
Operatoroptionen definieren
operatorOptions beschreibt, wie ein Attribut als Suchoperator funktioniert.
Jeder operatorOptions benötigt einen operatorName (z.B. title). Das ist der Parameter, den Nutzer in Suchanfragen eingeben (z.B. title:titanic). Verwenden Sie intuitive Namen und machen Sie sie Nutzern zugänglich.
Sie können ein operatorName für Properties desselben Typs freigeben. Bei Abfragen mit diesem Namen werden Ergebnisse aus allen übereinstimmenden Properties abgerufen.
Sortierbare Eigenschaften können lessThanOperatorName und greaterThanOperatorName für Vergleichsabfragen enthalten. Bei Texteigenschaften kann exactMatchWithOperator verwendet werden, um den gesamten Wert als einzelnes Token zu behandeln.
Anzeigeoptionen hinzufügen
Der optionale Abschnitt displayOptions enthält einen displayLabel. Dies ist ein nutzerfreundliches Label, das in den Suchergebnissen angezeigt wird.
Operatoren zum Filtern von Vorschlägen hinzufügen
Verwenden Sie suggestionFilteringOperators[], um eine Property zu definieren, mit der Autocomplete-Vorschläge gefiltert werden (z.B. um Filmvorschläge nach dem bevorzugten Genre eines Nutzers zu filtern). Sie können nur einen Filter für Vorschläge definieren.
Schema registrieren
Registrieren Sie Ihr Schema mit dem Schemadienst mithilfe Ihrer Datenquellen-ID. Senden Sie eine UpdateSchema-Anfrage:
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
Mit validateOnly: true können Sie Ihr Schema testen, ohne es zu registrieren.
Daten indexieren
Nach der Registrierung können Sie die Datenquelle mithilfe von Index-Aufrufen befüllen, in der Regel mit einem Connector.
Beispielanfrage zur Indexierung:
{
"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 mit einem kleinen Repository, bevor Sie es in der Produktion einsetzen. Erstellen Sie eine ACL, die die Ergebnisse auf einen Testnutzer beschränkt.
- Allgemeine Anfrage: Suche nach einem String (z.B. „titanic“), um alle übereinstimmenden Elemente zu sehen.
- Operatoranfrage: Verwenden Sie einen Operator (z.B.
actor:Zane), um die Ergebnisse zu begrenzen.
Schema anpassen
Behalten Sie das Nutzerfeedback im Blick und passen Sie Ihr Schema entsprechend an. Möglicherweise indexieren Sie neue Felder oder benennen Operatoren um, um sie intuitiver zu gestalten.
Neuindexierung nach einer Schemaänderung
Bei folgenden Änderungen ist keine Neuindexierung erforderlich:
- Operatornamen
- Numerische Grenzwerte.
- Geordnete Rangfolge.
- Aktualitäts- oder Anzeigeoptionen
Sie müssen neu indexieren für:
- Eigenschaften oder Objekte hinzufügen oder entfernen
isReturnable,isFacetableoderisSortableintrueändern.- Markieren einer Property
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.
exactMatchWithOperator- oderretrievalImportance-Einstellungen.
Komplexe Schemaänderungen vornehmen
Wenn Sie eine unzulässige Änderung vornehmen möchten, migrieren Sie die Attribute aus einer alten Definition in eine neue:
- Fügen Sie dem Schema ein neues Attribut mit einem anderen Namen hinzu.
- Registrieren Sie das Schema mit den neuen und den alten Attributen.
- Füllen Sie den Index nur mit der neuen Property auf.
- Löschen Sie das alte Attribut aus dem Schema.
- Aktualisieren Sie den Abfragecode, damit der neue Property-Name verwendet wird.
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
- Erstellen Sie eine Suchoberfläche.
- Suchqualität verbessern:
- Schema für optimale Abfrageinterpretation strukturieren:
- Synonyme definieren: