Schema erstellen und registrieren

Ein Google Cloud Search-Schema ist eine JSON-Struktur, Objekte, Eigenschaften und Optionen, die beim Indexieren und Abfragen Ihrer Daten verwendet werden sollen. Der Inhalts-Connector liest Daten aus Ihrem Repository und eines registrierten Schemas, strukturiert und indexiert die Daten.

Sie können ein Schema erstellen, indem Sie der API ein JSON-Schemaobjekt bereitstellen und dann registrieren. Sie müssen ein Schemaobjekt registrieren für jedes Ihrer Repositories, bevor Sie Ihre Daten indexieren können.

In diesem Dokument werden die Grundlagen der Schemaerstellung behandelt. Weitere Informationen dazu, wie Informationen zum Abstimmen Ihres Schemas zur Verbesserung der Sucherfahrung finden Sie Suchqualität verbessern:

Schema erstellen

Im Folgenden finden Sie eine Liste der Schritte, mit denen Sie Ihr Cloud Search-Schema erstellen:

  1. Erwartetes Nutzerverhalten ermitteln
  2. Datenquelle initialisieren
  3. Schema erstellen
  4. Vollständiges Beispielschema
  5. Schema registrieren
  6. Daten indexieren
  7. Schema testen
  8. Schema optimieren

Erwartetes Nutzerverhalten ermitteln

Wenn Sie wissen, welche Arten von Suchanfragen Ihre Nutzer stellen, können Sie Ihre Strategie entsprechend ausrichten. zum Erstellen Ihres Schemas.

Bei Abfragen für eine Filmdatenbank könnten Sie beispielsweise eine Nutzeranfrage wie "Zeig mir alle Filme mit Robert Redford". Ihr Schema muss daher Abfrageergebnisse unterstützen, die auf "Alle Filme mit Darsteller sein.“

Um Ihr Schema so zu definieren, dass es die Verhaltensmuster der Nutzer widerspiegelt, sollten Sie die folgenden Aufgaben ausführen:

  1. Bewerten Sie verschiedene gewünschte Suchanfragen von verschiedenen Nutzern.
  2. Identifizieren Sie die Objekte, die in Abfragen verwendet werden könnten. Objekte sind logisch. Sätze verwandter Daten, wie z. B. ein Film in einer Filmdatenbank.
  3. Identifizieren Sie die Eigenschaften und Werte, aus denen das Objekt besteht und die es sein könnte, die in Abfragen verwendet werden. Attribute sind die indexierbaren Attribute des Objekts. können sie primitive Werte oder andere Objekte enthalten. Ein Filmobjekt kann beispielsweise Eigenschaften wie den Titel und Veröffentlichungsdatum als primitive Werte. Das Filmobjekt kann auch andere Elemente enthalten, Objekte wie Darsteller, die ihre eigenen Eigenschaften haben, z. B. Name oder Rolle.
  4. Ermitteln Sie gültige Beispielwerte für Attribute. Werte sind die tatsächlichen Daten für eine Eigenschaft indexiert wird. Der Titel eines Films in Ihrer Datenbank könnte beispielsweise „Raiders of the Lost Ark“.
  5. Bestimmen Sie die von Ihren Nutzern gewünschten Sortier- und Rankingoptionen. Beispiel: Bei der Abfrage von Filmen möchten die Nutzenden möglicherweise chronologisch sortieren und nach und müssen nicht alphabetisch nach Titel sortieren.
  6. Optional: Überlegen Sie, ob eine Ihrer Properties eine spezifischere Kontext, in dem die Suche durchgeführt werden kann, wie z. B. die Position oder Abteilung, sodass Vorschläge für die automatische Vervollständigung basierend auf dem Kontext. Sucht ein Nutzer beispielsweise in einer Filmdatenbank, nur an einem bestimmten Filmgenre interessiert sind. Die Nutzenden würden definieren, Genre, das die Suchanfragen zurückgeben sollen, zum Beispiel als Teil des zu erstellen. Wenn ein Nutzer beginnt, eine Filmabfrage einzugeben, nur Filme in ihrem bevorzugten Genre, wie z. B. "Actionfilme", werden vorgeschlagen als automatisch vervollständigten Vorschlägen.
  7. Erstellen Sie eine Liste dieser Objekte, Eigenschaften und Beispielwerte, die in Suchanfragen verwendet wird. Details zur Verwendung dieser Liste siehe Abschnitt Operatoroptionen definieren)

Datenquelle initialisieren

Eine Datenquelle stellt die Daten aus einem Repository dar, die indexiert wurden. und in Google Cloud gespeichert. Eine Anleitung zum Initialisieren einer Datenquelle siehe Datenquellen von Drittanbietern verwalten

Die Suchergebnisse eines Nutzers werden von der Datenquelle zurückgegeben. Wenn Nutzende auf in einem Suchergebnis erscheint, leitet Cloud Search den Nutzer über die In der Indexierungsanfrage angegebene URL.

Objekte definieren

Die Grundeinheit von Daten in einem Schema ist das Objekt, auch als "Schema" Objekt“, einer logischen Datenstruktur. In einer Datenbank mit Filmen logische Struktur von Daten ist „Movie“. Ein anderes Objekt könnte „Person“ sein bis die am Film beteiligten Besetzung und die Crew repräsentieren.

Jedes Objekt in einem Schema verfügt über eine Reihe von Eigenschaften oder Attributen, die Beschreibung des Objekts, z. B. Titel und Dauer eines Films, oder Name und das Geburtsdatum einer Person. Eigenschaften eines Objekts können primitive -Werten oder anderen Objekten.

Abbildung 1 zeigt die Film- und Personenobjekte sowie die zugehörigen Eigenschaften.

Zeichnung von Schemaverbindungen zwischen Entitäten
Abbildung 1. Beispielschema mit zwei Objekten und ein Unterobjekt.

Ein Cloud Search-Schema ist im Grunde eine Liste von Anweisungen zur Objektdefinition, die im objectDefinitions. Das folgende Schema-Snippet zeigt Die objectDefinitions-Anweisungen für die Schemaobjekte „movie“ und „person“

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

Wenn Sie ein Schemaobjekt definieren, geben Sie für das Objekt ein name an, das unter allen anderen Objekten im Schema eindeutig sein. Normalerweise wird ein name- Wert, der das Objekt beschreibt, z. B. movie für ein Filmobjekt. Das Schema Der Dienst verwendet das Feld name als Schlüsselkennung für indexierbare Objekte. Für Weitere Informationen zum Feld name finden Sie in der Objektdefinition.

Objektattribute definieren

Wie in der Referenz zu ObjectDefinition Darauf folgt eine Reihe von options, und eine Liste mit propertyDefinitions Die options kann bestehen weiterhin aus freshnessOptions und displayOptions Die freshnessOptions werden verwendet, um das Ranking von Suchergebnissen basierend auf der Aktualität eines Artikels anzupassen. Die displayOptions werden verwendet, um zu definieren, ob bestimmte Labels und Eigenschaften die Suchergebnisse für ein Objekt.

Die propertyDefinitions Im Abschnitt definieren Sie die Eigenschaften für ein Objekt, z. B. den Filmtitel. und das Veröffentlichungsdatum.

Das folgende Snippet zeigt das movie-Objekt mit zwei Eigenschaften: movieTitle und releaseDate.

{
  "objectDefinitions": [
    {
      "name": "movie",
      "propertyDefinitions": [
        {
          "name": "movieTitle",
          "isReturnable": true,
          "isWildcardSearchable": 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"
            }
          },
          "displayOptions": {
            "displayLabel": "Release date"
          }
      ...
      ]
    }
  ]
}

Die PropertyDefinition besteht aus den folgenden Elementen:

  • Ein name-String.
  • Eine Liste mit typunabhängigen Optionen, z. B. isReturnable im vorherigen Snippet.
  • Einen Typ und die zugehörigen typspezifischen Optionen z. B. textPropertyOptions und retrievalImportance im vorherigen Snippet.
  • Ein operatorOptions, das beschreibt, wie das Attribut als .
  • Eine oder mehrere displayOptions, z. B. displayLabel im vorherigen Snippet.

Der name einer Eigenschaft muss innerhalb des Objekts, in dem sie enthalten ist, eindeutig sein. aber der gleiche Name kann in anderen Objekten und Unterobjekten verwendet werden. In Abbildung 1 wurden der Titel und das Veröffentlichungsdatum des Films zweimal definiert: einmal im movie-Objekt und noch einmal im filmography-Unterobjekt des person-Objekt. In diesem Schema wird das Feld movieTitle wiederverwendet damit das Schema zwei Arten von Suchverhalten unterstützt:

  • Suchergebnisse für Filme anzeigen, wenn Nutzer nach dem Titel eines Films suchen
  • Suchergebnisse für Personen anzeigen, wenn Nutzer nach dem Titel eines Films suchen in dem ein Schauspieler mitspielt.

Ebenso wird das Feld releaseDate vom Schema wiederverwendet, da es die gleichen Bedeutung für die beiden movieTitle-Felder.

Überlegen Sie bei der Entwicklung Ihres eigenen Schemas, inwiefern Ihr Repository , die Daten enthalten, die Sie mehrmals in Ihrem Schema deklarieren möchten.

Typunabhängige Optionen hinzufügen

Die PropertyDefinition enthält allgemeine Optionen für die Suchfunktion, die für alle Unterkünfte gelten unabhängig vom Datentyp.

  • isReturnable: Gibt an, ob die Property Daten identifiziert, die überprüft werden sollen. die in den Suchergebnissen über die Query API zurückgegeben werden. Alle Beispielfilme Properties zurückgegeben werden können. Nicht rückgabefähige Eigenschaften können für die Suche verwendet werden. ohne an den Nutzer zurückgegeben zu werden.
  • isRepeatable: Gibt an, ob mehrere Werte für das Attribut zulässig sind. Für Beispiel: Ein Film hat nur ein Veröffentlichungsdatum, kann aber mehrere Schauspieler haben.
  • isSortable: Gibt an, dass das Attribut zum Sortieren verwendet werden kann. Dieses kann für Attribute, die wiederholbar sind, nicht "true" sein. Beispiel: Filmergebnisse nach Veröffentlichungsdatum oder Zielgruppenbewertung sortiert werden.
  • isFacetable: Gibt an, dass das Attribut zum Generieren von Attributen verwendet werden kann. Ein Attribut wird verwendet, um Suchergebnisse zu verfeinern, die anfänglichen Ergebnisse und fügt dann Kriterien oder Facetten hinzu, um diese Ergebnisse. Diese Option kann für Attribute des Typs "object" und "true" nicht auf "true" festgelegt werden isReturnable muss „true“ sein, um diese Option festzulegen. Diese Option ist nur unterstützt für enum-, boolesche und Text-Properties. In unserem Beispielschema könnten wir genre, actorName, userRating und mpaaRating als Attribut verwendbar, um Folgendes zu erlauben: zur interaktiven Verfeinerung von Suchergebnissen verwendet werden.
  • isWildcardSearchable gibt an, dass Nutzer eine Platzhaltersuche durchführen können für für diese Property. Diese Option ist nur für Texteigenschaften verfügbar. Funktionsweise von Platzhaltern auf das Textfeld angewendet wird, hängt vom Wert ab, der im Feld exactMatchWithOperator hinzugefügt. Wenn exactMatchWithOperator auf true gesetzt ist, gilt Folgendes: wird der Textwert als ein atomarer Wert tokenisiert und eine Platzhaltersuche die im Vergleich dazu ausgeführt wurden. Wenn der Textwert beispielsweise science-fiction ist, die Platzhalterabfrage science-*. Wenn exactMatchWithOperator auf false, wird der Textwert tokenisiert und eine Platzhaltersuche für jedes Token. Lautet der Textwert z. B. „Science-Fiction“, wird der Platzhalter Abfragen sci* oder fi* stimmen mit dem Element überein, aber science-* nicht mit ihm.

Diese allgemeinen Suchfunktionsparameter sind alle boolesche Werte. sie haben alle den Standardwert false und müssen auf true festgelegt werden zu verwenden.

In der folgenden Tabelle sehen Sie die booleschen Parameter, die auf true festgelegt sind für alle Attribute des movie-Objekts:

Attribut isReturnable isRepeatable isSortable isFacetable isWildcardSearchable
movieTitle wahr wahr
releaseDate wahr wahr
genre wahr wahr wahr
duration wahr
actorName wahr wahr wahr wahr
userRating wahr wahr
mpaaRating wahr wahr

Für genre und actorName ist isRepeatable auf true festgelegt da ein Film zu mehr als einem Genre gehört und mit mehr als einem Akteur. Attribute können nicht sortiert werden, wenn sie wiederholbar sind oder in einem wiederholbaren Unterobjekt enthalten sind.

Typ definieren

Die PropertyDefinition im Referenzabschnitt mehrere xxPropertyOptions aufgelistet, bei denen xx ein bestimmter Typ ist, wie z. B. boolean. Um den Datentyp der Property festzulegen, müssen Sie das entsprechende Datentypobjekt. Datentypobjekt für eine Property definieren legt den Datentyp dieser Eigenschaft fest. Zum Beispiel definieren Sie textPropertyOptions für die Eigenschaft movieTitle gibt an, dass der Film "title" ist vom Typ "Text". Das folgende Snippet zeigt das Attribut movieTitle wobei textPropertyOptions den Datentyp festlegt.

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    ...
  },
  ...
},

Einer Property kann nur ein Datentyp zugeordnet sein. In unserem Film Schema kann releaseDate nur ein Datum sein (z.B. 2016-01-13) oder einen String (z.B. January 13, 2016), aber nicht beides.

Hier sehen Sie die Datentypobjekte zur Angabe der Datentypen für die Eigenschaften im Beispielschemaschema:

Attribut Datentypobjekt
movieTitle textPropertyOptions
releaseDate datePropertyOptions
genre enumPropertyOptions
duration textPropertyOptions
actorName textPropertyOptions
userRating integerPropertyOptions
mpaaRating textPropertyOptions

Der Datentyp, den Sie für das Attribut auswählen, hängt von den erwarteten Anwendungsfällen ab. Im erfundenen Szenario dieses Filmschemas werden Nutzende Ergebnisse chronologisch sortieren möchten, also ist releaseDate ein Datumsobjekt. Angenommen, es gibt erwartete Anwendungsfälle für den Vergleich von Dezember-Releases mit Januar-Releases vergleichen, dann könnte ein String-Format nützlich sein.

Typspezifische Optionen konfigurieren

Die PropertyDefinition finden Sie Links zu Optionen für jeden Typ. Typspezifischste Optionen sind optional, mit Ausnahme der Liste possibleValues in der enumPropertyOptions. Außerdem können Sie mit der Option orderedRanking Folgendes tun: Ranking-Werte relativ zueinander zu betrachten. Die folgendes Snippet zeigt das Attribut movieTitle mit textPropertyOptions Festlegen des Datentyps und mit der typspezifischen Option retrievalImportance

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    "retrievalImportance": { "importance": "HIGHEST" },
    ...
  },
  ...
}

Im Folgenden sind die zusätzlichen typspezifischen Optionen aufgeführt, die im Beispielschema verwendet werden:

Attribut Typ Typspezifische Optionen
movieTitle textPropertyOptions retrievalImportance
releaseDate datePropertyOptions
genre enumPropertyOptions
duration textPropertyOptions
actorName textPropertyOptions
userRating integerPropertyOptions orderedRanking, maximumValue
mpaaRating textPropertyOptions

Operatoroptionen definieren

Neben den typspezifischen Optionen gibt es für jeden Typ auch eine Reihe optionaler operatorOptions Diese Optionen beschreiben, wie die Eigenschaft als . Das folgende Snippet zeigt das Attribut movieTitle mit textPropertyOptions, der den Datentyp festlegt und mit dem retrievalImportance und operatorOptions typspezifische Optionen.

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    "retrievalImportance": { "importance": "HIGHEST" },
    "operatorOptions": {
      "operatorName": "title"
    }
  },
  ...
}

Für jedes operatorOptions ist ein operatorName vorhanden, z. B. title für movieTitle. Der Operatorname ist der Suchoperator für das Attribut. A Suchoperator ist der tatsächliche Parameter, den Nutzer voraussichtlich verwenden werden wenn Sie eine Suche eingrenzen. Wenn Sie z. B. anhand des Titels nach Filmen suchen möchten, Nutzer gibt title:movieName ein, wobei movieName der Name eines Films ist.

Operatornamen müssen nicht mit dem Namen der Eigenschaft übereinstimmen. Stattdessen sollten Sie Operatornamen verwenden, die den am häufigsten verwendeten Wörtern entsprechen, von Nutzern in Ihrer Organisation. Wenn Ihre Nutzer beispielsweise den Begriff „name“ statt „title“ für einen Filmtitel, dann sollte der Operatorname so lauten: „name“ festgelegt ist.

Sie können denselben Operatornamen für mehrere Attribute verwenden, in denselben Typ aufgelöst werden. Bei Verwendung eines gemeinsamen Operatornamens während werden alle Eigenschaften abgerufen, für die dieser Operatorname verwendet wird. Beispiel: Angenommen, das Filmobjekt hat plotSummary und plotSynopsis Properties und jede dieser Unterkünfte hatten den operatorName von plot. Als solange beide dieser Eigenschaften Text sind (textPropertyOptions), wird ein einzelnes werden beide zusammen mit dem Suchoperator plot abgerufen.

Neben operatorName können Attribute, die sortierbar sind, auch Folgendes haben: Die Felder lessThanOperatorName und greaterThanOperatorName in operatorOptions. Nutzende können diese Optionen verwenden, um Abfragen auf der Grundlage von Vergleichen mit einer eingereichten Wert.

Schließlich hat textOperatorOptions ein exactMatchWithOperator-Feld in operatorOptions Wenn Sie exactMatchWithOperator auf true setzen, muss der Abfragestring dem gesamten Eigenschaftswert entsprechen und nicht nur im Text zu finden sind. Der Textwert wird bei Suchen mit Operatoren als ein atomarer Wert behandelt und Attributübereinstimmungen.

Betrachten Sie beispielsweise die Indexierung von Book- oder Movie-Objekten mit Genreeigenschaften. Zu den Genres könnten „Science-Fiction“, „Science“ und „Fiction“ gehören. Mit exactMatchWithOperator auf false festgelegt oder weggelassen, nach einem Genre oder indem Sie entweder den Bereich „Wissenschaft“ oder „Belletristik“ Facette ebenfalls Ergebnisse für "Science-Fiction" zurückgeben da der Text tokenisiert ist und der „Wissenschaft“ und „Belletristik“ Tokens gibt es in "Science-Fiction". Wenn exactMatchWithOperator den Wert true hat, wird der Text als einzelnes Token behandelt, „Wissenschaft“ noch „Belletristik“ stimmt mit "Science-Fiction" überein.

Optional: Abschnitt displayOptions hinzufügen

Am Ende jeder Seite gibt es einen optionalen displayOptions-Abschnitt. propertyDefinition. Dieser Abschnitt enthält einen displayLabel-String. „displayLabel“ ist ein empfohlenes, nutzerfreundliches Textlabel für die Unterkunft. Wenn die Property für die Anzeige mit ObjectDisplayOptions, wird dieses Label vor der Property angezeigt. Wenn das Attribut konfiguriert ist für Display und displayLabel ist nicht definiert, nur der Attributwert ist angezeigt.

Das folgende Snippet zeigt das Attribut movieTitle mit einem displayLabel auf 'Titel' [Title] festgelegt.

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    "retrievalImportance": { "importance": "HIGHEST" },
    "operatorOptions": {
       "operatorName": "title"
    }
},
  "displayOptions": {
    "displayLabel": "Title"
  }
},

Nachfolgend sind die displayLabel-Werte für alle Attribute der movie aufgeführt. -Objekt im Beispielschema:

Attribut displayLabel
movieTitle Title
releaseDate Release date
genre Genre
duration Run length
actorName Actor
userRating Audience score
mpaaRating MPAA rating

Optional: Bereich „suggestionFilteringOperators[]“ hinzufügen

Es gibt eine optionale suggestionFilteringOperators[] am Ende eines beliebigen propertyDefinition-Abschnitts hinzu. In diesem Abschnitt können Sie Definieren Sie eine Eigenschaft, die zum Filtern von Vorschlägen für die automatische Vervollständigung verwendet wird. Zum Beispiel haben Sie kann den Operator genre definieren, um Vorschläge basierend auf dem bevorzugtes Filmgenre. Wenn der Nutzer dann seine Suchanfrage eingibt, werden nur diese Filme, die ihrem bevorzugten Genre entsprechen, werden im Rahmen der automatischen Vervollständigung angezeigt. Vorschläge.

Schema registrieren

Damit bei Cloud Search-Abfragen strukturierte Daten zurückgegeben werden, müssen Sie sich registrieren mit dem Cloud Search-Schemadienst erstellen. Für die Registrierung eines Schemas ist die ID der Datenquelle, die Sie im Schritt Datenquelle initialisieren

Geben Sie mit der ID der Datenquelle eine UpdateSchema -Anfrage zum Registrieren Ihres Schemas.

Wie auf der UpdateSchema Referenzseite, Senden Sie die folgende HTTP-Anfrage, um Ihr Schema zu registrieren:

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

Der Text Ihrer Anfrage sollte Folgendes enthalten:

{
  "validateOnly": // true or false,
  "schema": {
    // ... Your complete schema object ...
  }
}

Mit der Option validateOnly können Sie die Gültigkeit Ihres Schemas testen, ohne tatsächlich registriert.

Daten indexieren

Sobald Ihr Schema registriert ist, füllen Sie die Datenquelle mit Index Anrufe. Die Indexierung erfolgt normalerweise über Ihren Inhalts-Connector.

Bei Verwendung des Filmschemas würde eine REST API-Indexierungsanfrage für einen einzelnen Film so aussehen:

{
  "name": "datasource/<data_source_id>/items/titanic",
  "acl": {
    "readers": [
      {
        "gsuitePrincipal": {
          "gsuiteDomain": true
        }
      }
    ]
  },
  "metadata": {
    "title": "Titanic",
    "sourceRepositoryUrl": "http://www.imdb.com/title/tt2234155/?ref_=nv_sr_1",
    "objectType": "movie"
  },
  "structuredData": {
    "object": {
      "properties": [
        {
          "name": "movieTitle",
          "textValues": {
            "values": [
              "Titanic"
            ]
          }
        },
        {
          "name": "releaseDate",
          "dateValues": {
            "values": [
              {
                "year": 1997,
                "month": 12,
                "day": 19
              }
            ]
          }
        },
        {
          "name": "actorName",
          "textValues": {
            "values": [
              "Leonardo DiCaprio",
              "Kate Winslet",
              "Billy Zane"
            ]
          }
        },
        {
          "name": "genre",
          "enumValues": {
            "values": [
              "Drama",
              "Action"
            ]
          }
        },
        {
          "name": "userRating",
          "integerValues": {
            "values": [
              8
            ]
          }
        },
        {
          "name": "mpaaRating",
          "textValues": {
            "values": [
              "PG-13"
            ]
          }
        },
        {
          "name": "duration",
          "textValues": {
            "values": [
              "3 h 14 min"
            ]
          }
        }
      ]
    }
  },
  "content": {
    "inlineContent": "A seventeen-year-old aristocrat falls in love with a kind but poor artist aboard the luxurious, ill-fated R.M.S. Titanic.",
    "contentFormat": "TEXT"
  },
  "version": "01",
  "itemType": "CONTENT_ITEM"
}

Wie Sie sehen, stimmt der Wert von movie im Feld objectType mit dem Objekt überein. in das Schema ein. Durch den Abgleich dieser beiden Werte weiß Cloud Search, welches Schemaobjekt bei der Indexierung verwendet werden soll.

Beachten Sie auch, wie bei der Indexierung des Schemaattributs „releaseDate“ der untergeordneten Properties year, month und day date-Datentyp definiert, indem er mithilfe von datePropertyOptions definiert wird. Da year, month und day jedoch nicht im Schema definiert sind, kann keine Abfrage für eine dieser Properties durchführen (z.B. year) einzeln.

Außerdem wird das wiederholbare Attribut actorName mithilfe einer Liste indexiert. von Werten.

Mögliche Indexierungsprobleme erkennen

Die beiden häufigsten Probleme im Zusammenhang mit Schemas und Indexierung sind:

  • Ihre Indexierungsanforderung enthält ein Schemaobjekt oder einen Eigenschaftsnamen, der nicht die beim Schemadienst registriert sind. Dieses Problem führt dazu, dass die Eigenschaft oder das Objekt ignoriert werden.

  • Ihre Indexierungsanforderung enthält ein Attribut mit einem anderen Typwert als dem Typ. die im Schema registriert sind. Dieses Problem führt dazu, dass Cloud Search einen Fehler zurückgibt zum Zeitpunkt der Indexierung.

Schema mit mehreren Abfragetypen testen

Bevor Sie Ihr Schema für ein großes Produktionsdaten-Repository registrieren, sollten Sie mit einem kleineren Testdaten-Repository testen. Testen mit einem kleinere Test-Repositorys, mit denen Sie schnell Anpassungen an Ihrem Schema vornehmen können, und löschen die indexierten Daten, ohne einen größeren Index oder einen vorhandenen Produktionsindex haben. Erstellen Sie für ein Testdaten-Repository Eine ACL, die nur einen Testnutzer autorisiert, sodass andere Nutzer diese Daten nicht sehen können in den Suchergebnissen.

Informationen zum Erstellen einer Suchoberfläche zum Validieren von Suchanfragen finden Sie unter Die Suchoberfläche

Dieser Abschnitt enthält mehrere unterschiedliche Beispielabfragen, die Sie zum Testen ein Filmschema.

Mit einer generischen Abfrage testen

Eine generische Abfrage gibt alle Elemente in der Datenquelle zurück, die eine bestimmte . Mit einer Suchoberfläche können Sie eine allgemeine Abfrage für einen Film ausführen. indem Sie das Wort "Titanic" eingeben und die Eingabetaste drücken. Alle Filme mit dem Wort „Titanic“ in den Suchergebnissen zurückgegeben werden soll.

Mit einem Operator testen

Durch das Hinzufügen eines Operators zur Abfrage werden die Ergebnisse auf die Elemente eingeschränkt, die mit dem Operatorwert. So können Sie beispielsweise den actor-Operator verwenden, um alle Filme mit einem bestimmten Schauspieler. Mit einer Suchoberfläche können Sie einfach durch Eingabe eines operator=value-Paares wie &quot;actor:Zane&quot; und drücke die &quot;actor:Zane&quot;. Alle Filme mit Zane als Schauspieler in den Suchergebnissen zurückgegeben werden soll.

Schema optimieren

Nachdem Ihr Schema und Ihre Daten verwendet wurden, können Sie weiter beobachten, was funktioniert und nicht für Ihre Nutzer funktioniert. Sie sollten Ihr Schema für die folgenden Situationen anpassen:

  • Indexieren eines Felds, das noch nicht indexiert wurde Beispiel: Ihre Nutzer wiederholt nach dem Namen des Regisseurs nach Filmen. Passen Sie Ihr Schema so an, dass es den Namen des Regisseurs als Operator unterstützt.
  • Ändern der Namen von Suchoperatoren basierend auf dem Feedback von Nutzern. Operatornamen sind nutzungsfreundlich ist. Wenn sich Ihre Nutzer ständig „erinnern“, der falsche Operator, können Sie ihn ändern.

Neuindexierung nach einer Schemaänderung

Wenn Sie einen der folgenden Werte in Ihrem Schema ändern, müssen Sie keine Ihre Daten neu zu indexieren. Sie können einfach ein neues UpdateSchema und Ihr Index funktioniert weiterhin:

  • Operatornamen.
  • Ganzzahlige Mindest- und Höchstwerte.
  • Nach Ganzzahl und Enum geordnetes Ranking.
  • Optionen für Aktualität.
  • Anzeigeoptionen

Für die folgenden Änderungen funktionieren zuvor indexierte Daten weiterhin entsprechend dem zuvor registrierten Schema. Sie müssen die Indexierung vorhandene Einträge, um Änderungen basierend auf dem aktualisierten Schema anzuzeigen, wenn sie diese enthalten. Änderungen:

  • Neue Eigenschaft oder neues Objekt hinzufügen oder entfernen
  • isReturnable, isFacetable oder isSortable von false ändern in true

Sie sollten isFacetable oder isSortable nur auf true festlegen, wenn Sie eine Anwendungsfall und Bedarf.

Wenn Sie Ihr Schema aktualisieren, indem Sie die Eigenschaft isSuggestable markieren, müssen Sie Ihre Daten neu indexieren, was zu einer Verzögerung bei der Verwendung für diese Property.

Unzulässige Property-Änderungen

Einige Schemaänderungen sind nicht zulässig, selbst wenn Sie Ihre Daten neu indexieren, da sie den Index beschädigen oder schlechte bzw. inkonsistente Suchergebnisse liefern. Diese Änderungen einschließen an:

  • Datentyp „Property“
  • Attributnamen
  • exactMatchWithOperator-Einstellung.
  • retrievalImportance-Einstellung.

Es gibt jedoch eine Möglichkeit, diese Einschränkung zu umgehen.

Komplexe Schemaänderung vornehmen

Um Änderungen zu vermeiden, die schlechte Suchergebnisse oder eine fehlerhafte Suche zur Folge hätten -Index verhindert, dass Cloud Search bestimmte Änderungen UpdateSchema nachdem das Repository indexiert wurde. Zum Beispiel der Datentyp oder Name einer Eigenschaft kann nicht mehr geändert werden, nachdem sie festgelegt wurden. Diese Änderungen lässt sich nicht mit einer einfachen UpdateSchema auch wenn Sie Ihre Daten neu indexieren.

Falls Sie eine anderweitig unzulässige Änderung an Ihrem können Sie häufig eine Reihe zulässiger Änderungen vornehmen, Effekts. Im Allgemeinen umfasst die Migration zuerst indexierte Properties. Objektdefinition in eine neuere erstellen und dann eine Indexierungsanfrage, bei der nur das neuere Attribut verwendet wird.

Die folgenden Schritte zeigen, wie Sie den Datentyp oder den Namen einer Property ändern:

  1. Fügen Sie der Objektdefinition in Ihrem Schema eine neue Eigenschaft hinzu. Verwenden Sie ein anderes aus der Property, die Sie ändern möchten.
  2. Legen Sie den UpdateSchema mit der neuen Definition. Senden Sie das gesamte Schema, einschließlich sowohl die neue als auch die alte Property.
  3. Backfill für den Index aus dem Daten-Repository ausführen. Senden Sie zum Backfill für den Index alle Indexierungsanfragen mit dem neuen Attribut, aber nicht mit der Eigenschaft , da dies dazu führen würde, dass Suchanfragenübereinstimmungen doppelt gezählt werden.

    1. Prüfen Sie während des Indexierungs-Backfills, ob das neue Attribut und verwenden Sie standardmäßig die alte Property, um inkonsistentes Verhalten zu vermeiden.
    2. Führen Sie nach Abschluss des Backfills Testabfragen aus, um dies zu überprüfen.
  4. Löschen Sie die alte Property. Weiteres senden UpdateSchema ohne den alten Property-Namen zu beantragen und die alte Property nicht mehr zu verwenden in zukünftigen Indexierungsanfragen verwenden.

  5. Migrieren Sie jede Verwendung der alten Property zur neuen. Wenn beispielsweise Wenn Sie den Namen der Property von Ersteller in Autor ändern, müssen Sie Ihre Abfrage aktualisieren. um den Autor dort zu verwenden, wo zuvor auf den Ersteller verwiesen wurde.

In Cloud Search werden gelöschte Properties und Objekte 30 Tage lang gespeichert. um eine Wiederverwendung zu verhindern, die zu unerwarteten Indexierungsergebnissen führen würde. Innerhalb dieser 30 Tage sollten Sie die gelöschte Ressource -Objekt oder -Eigenschaft, einschließlich des Auslassens dieser bei zukünftigen Indexanfragen. So wird sichergestellt, dass Sie, wenn Sie sich später entscheiden, die Immobilie oder -Objekt handelt, können Sie dies so tun, dass die Korrektheit Ihres Index gewahrt bleibt.

Größenbeschränkungen kennen

Bei Cloud Search gibt es Beschränkungen für die Größe von strukturierten Datenobjekten und Schemas. Diese Limits sind:

  • Die maximale Anzahl von Objekten der obersten Ebene beträgt 10 Objekte.
  • Die maximale Tiefe einer strukturierten Datenhierarchie beträgt zehn Ebenen.
  • Die Gesamtzahl der Felder in einem Objekt ist auf 1.000 begrenzt. Diese ergibt sich aus der Anzahl der primitiven Felder plus der Summe der Anzahl in jedem verschachtelten Objekt.

Nächste Schritte

Als Nächstes könnten Sie Folgendes tun:

  1. Erstellen Sie eine Suchoberfläche, um Ihr Schema zu testen.

  2. Optimieren Sie Ihr Schema, um die Suchqualität zu verbessern.

  3. Schema für eine optimale Abfrageinterpretation strukturieren

  4. Hier erfahren Sie, wie Sie die Zu definierendes _dictionaryEntry-Schema Synonyme für Begriffe, die in Ihrem Unternehmen häufig verwendet werden. So verwenden Sie den _dictionaryEntry Schema, siehe Definieren Sie Synonyme.

  5. Erstellen Sie einen Connector.