Ein Google Cloud Search-Schema ist eine JSON-Struktur, Objekte, Eigenschaften und Optionen, die beim Indexieren und Abfragen Ihrer Daten verwendet werden sollen. Der Inhaltsconnector 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:
- Erwartetes Nutzerverhalten ermitteln
- Datenquelle initialisieren
- Schema erstellen
- Vollständiges Beispielschema
- Schema registrieren
- Daten indexieren
- Schema testen
- Schema optimieren
Erwartetes Nutzerverhalten ermitteln
Wenn du weißt, welche Arten von Suchanfragen deine Nutzer stellen, kannst du deine 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:
- Bewerten Sie verschiedene gewünschte Suchanfragen von verschiedenen Nutzern.
- 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.
- 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.
- Ermitteln Sie gültige Beispielwerte für Attribute. Werte sind die tatsächlichen Daten für eine Eigenschaft indexiert wird. Beispielsweise könnte der Titel eines Films in Ihrer Datenbank „Raiders of the Lost Ark“.
- Bestimmen Sie die von Ihren Nutzern gewünschten Sortier- und Rankingoptionen. Beispiel: sollten Nutzende bei der Abfrage von Filmen chronologisch sortieren und nach und müssen nicht alphabetisch nach Titel sortieren.
- 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 dann eine Filmabfrage eingibt, nur Filme in ihrem bevorzugten Genre, wie z. B. "Actionfilme", werden vorgeschlagen als automatisch vervollständigten Vorschlägen.
- 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](https://developers-dot-devsite-v2-prod.appspot.com/static/cloud-search/images/schemaExample.png?authuser=0000&hl=de)
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
wird definiert, ob bestimmte Labels und Eigenschaften in
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
undretrievalImportance
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 werdenisReturnable
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 wirgenre
,actorName
,userRating
undmpaaRating
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. WennexactMatchWithOperator
auftrue
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 beispielsweisescience-fiction
ist, die Platzhalterabfragescience-*
. WennexactMatchWithOperator
auffalse
, wird der Textwert tokenisiert und eine Platzhaltersuche für jedes Token. Lautet der Textwert z. B. „Science-Fiction“, wird der Platzhalter Abfragensci*
oderfi*
stimmen mit dem Element überein, aberscience-*
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. Ein Attribut kann nicht sortiert werden, wenn es wiederholbar ist
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 von optionalen
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 die 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 machen.
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 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
"actor:Zane" und drücke die "actor:Zane". 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 die 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
oderisSortable
vonfalse
ändern intrue
Sie sollten isFacetable
oder isSortable
nur dann 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 oder uneinheitliche Suchergebnisse liefern. Diese Änderungen einbeziehen 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:
- Fügen Sie der Objektdefinition in Ihrem Schema eine neue Eigenschaft hinzu. Verwenden Sie ein anderes aus der Property, die Sie ändern möchten.
- Legen Sie den UpdateSchema mit der neuen Definition. Senden Sie das gesamte Schema, einschließlich sowohl die neue als auch die alte Property.
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.
- 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.
- Führen Sie nach Abschluss des Backfills Testabfragen aus, um dies zu überprüfen.
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.
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:
Erstellen Sie eine Suchoberfläche, um Ihr Schema zu testen.
Optimieren Sie Ihr Schema, um die Suchqualität zu verbessern.
Schema für eine optimale Abfrageinterpretation strukturieren
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 die_dictionaryEntry
Schema, siehe Definieren Sie Synonyme.Erstellen Sie einen Connector.