Un schéma Google Cloud Search est une structure JSON qui définit les objets, les propriétés et les options à utiliser pour indexer et interroger vos données. Le connecteur de contenu lit les données de votre dépôt et, selon le schéma, les structures et les index enregistrés.
Pour créer un schéma, fournissez un objet de schéma JSON à l'API, puis enregistrez-le. Vous devez enregistrer un objet de schéma pour chacun de vos dépôts avant de pouvoir indexer vos données.
Cet article traite des principes de base de la création de schémas. Pour découvrir comment ajuster votre schéma afin d'améliorer l'expérience de recherche, consultez Améliorer la qualité de la recherche.
Créer un schéma
Voici une liste des étapes à suivre pour créer votre schéma Cloud Search:
- Identifier le comportement attendu de l'utilisateur
- Initialiser une source de données
- Créer un schéma
- Exemple de schéma complet
- Enregistrer votre schéma
- Indexer vos données
- Tester votre schéma
- Ajuster votre schéma
Identifiez le comportement attendu de l'utilisateur
Anticiper les types de requêtes que vos utilisateurs effectuent vous aidera à orienter votre stratégie de création de schéma.
Par exemple, lorsque vous envoyez des requêtes à une base de données de films, vous pouvez anticiper que l'utilisateur envoie une requête telle que "Montre-moi tous les films avec Robert Redford". Votre schéma doit donc accepter les résultats des requêtes en fonction de tous les films d'un acteur spécifique.
Pour définir votre schéma de manière à refléter les modèles de comportement des utilisateurs, envisagez d'effectuer les tâches suivantes:
- Évaluer un large éventail de requêtes souhaitées provenant de différents utilisateurs
- Identifiez les objets qui pourraient être utilisés dans les requêtes. Les objets sont des ensembles logiques de données associées, tels qu'un film dans une base de données de films.
- Identifiez les propriétés et les valeurs qui composent l'objet et qui peuvent être utilisées dans les requêtes. Les propriétés sont les attributs indexables de l'objet. Elles peuvent inclure des valeurs primitives ou d'autres objets. Par exemple, un objet "film" peut avoir des propriétés telles que le titre et la date de sortie du film. L'objet Film peut également contenir d'autres objets, tels que des membres Cast, qui ont leurs propres propriétés, telles que leur nom ou leur rôle.
- Identifier les exemples de valeurs valides pour les propriétés Les valeurs correspondent aux données réellement indexées d'une propriété. Par exemple, un titre de film dans votre base de données peut être "Raiders of the Lost Ark."
- Déterminez les options de tri et de classement souhaitées par vos utilisateurs. Par exemple, lorsqu'ils interrogent des films, les utilisateurs peuvent trier les résultats par ordre chronologique et les classer par note, sans avoir à les trier par titre.
- Dressez la liste de ces objets, propriétés et exemples de valeurs utilisables dans les recherches. (Pour en savoir plus sur l'utilisation de cette liste, consultez la section Définir les options d'opérateur.)
Initialiser la source de données
Une source de données représente les données d'un dépôt qui ont été indexées et stockées dans Google Cloud. Pour savoir comment initialiser une source de données, consultez Gérer les sources de données tierces.
Les résultats de recherche d'un utilisateur sont renvoyés par la source de données. Lorsqu'un utilisateur clique sur un résultat de recherche, Cloud Search le redirige vers l'élément réel à l'aide de l'URL fournie dans la requête d'indexation.
Définir vos objets
L'unité fondamentale des données dans un schéma est l'objet, également appelé objet de schéma, qui est une structure logique de données. Dans une base de données de films, une structure logique de données est "film". Un autre objet peut être une "personne" pour représenter le casting et l'équipage impliqués dans le film.
Chaque objet d'un schéma possède une série de propriétés ou d'attributs qui décrivent cet objet, tels que le titre et la durée d'un film, ou le nom et la date de naissance d'une personne. Les propriétés d'un objet peuvent inclure des valeurs primitives ou d'autres objets.
La Figure 1 montre les objets du film et de personne, ainsi que les propriétés associées.

Un schéma Cloud Search est essentiellement une liste d'instructions de définition d'objet définies dans la balise objectDefinitions
. L'extrait de schéma suivant montre les instructions objectDefinitions
pour les objets de schéma de film et de personne.
{
"objectDefinitions": [
{
"name": "movie",
...
},
{
"name": "person",
...
}
]
}
Lorsque vous définissez un objet de schéma, vous devez fournir un name
qui doit être unique parmi tous les autres objets du schéma. En règle générale, vous utiliserez une valeur name
décrivant l'objet, par exemple movie
pour un objet film. Le service de schéma utilise le champ name
comme identifiant de clé pour les objets indexables. Pour en savoir plus sur le champ name
, consultez la page Définition d'objet.
Définir les propriétés d'un objet
Comme indiqué dans la documentation de référence pour ObjectDefinition, le nom de l'objet est suivi d'un ensemble de options
et d'une liste de propertyDefinitions
.
options
peut également comprendre freshnessOptions
et displayOptions
.
L'élément freshnessOptions
permet d'ajuster le classement dans la recherche en fonction de l'actualisation d'un élément. displayOptions
permet de définir si des libellés et des propriétés spécifiques sont affichés dans les résultats de recherche d'un objet.
La section propertyDefinitions
vous permet de définir les propriétés d'un objet, telles que le titre et la date de sortie du film.
L'extrait de code suivant montre l'objet movie
avec deux propriétés: movieTitle
et 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"
}
...
]
}
]
}
La propriété PropertyDefinition comprend les éléments suivants:
name
.- Une liste d'options indépendamment du type, telle que
isReturnable
dans l'extrait précédent - un type et les options qui lui sont associées (par exemple,
textPropertyOptions
etretrievalImportance
) dans l'extrait précédent ; - Un
operatorOptions
décrivant comment la propriété est utilisée en tant qu'opérateur de recherche. - Un ou plusieurs
displayOptions
, commedisplayLabel
dans l'extrait précédent
La propriété name
d'une propriété doit être unique au sein de l'objet parent, mais le même nom peut être utilisé dans d'autres objets et sous-objets.
Dans la figure 1, le titre et la date de sortie du film ont été définis deux fois : une fois dans l'objet movie
et une autre fois dans le sous-objet filmography
de l'objet person
. Ce schéma réutilise le champ movieTitle
de sorte que le schéma accepte deux types de comportements de recherche:
- Afficher les résultats de films lorsque les utilisateurs recherchent le titre d'un film.
- Afficher les résultats de personnes lorsque les utilisateurs recherchent le titre d'un film qu'un acteur a joué.
De même, le schéma réutilise le champ releaseDate
, car il a le même sens pour les deux champs movieTitle
.
Lors du développement de votre propre schéma, réfléchissez aux champs associés dans votre dépôt qui contiennent des données que vous souhaitez déclarer plusieurs fois dans votre schéma.
Ajouter des options indépendamment du type
La section PropertyDefinition répertorie les options de fonctionnalité de recherche générale communes à toutes les propriétés, quel que soit le type de données.
isReturnable
: indique si la propriété identifie les données qui doivent être affichées dans les résultats de recherche via l'API Query. Tous les exemples de propriétés de film peuvent être renvoyés. Les propriétés qui ne peuvent pas être renvoyées peuvent être utilisées pour rechercher ou classer les résultats sans être renvoyés à l'utilisateur.isRepeatable
: indique si plusieurs valeurs sont autorisées pour l'établissement. Par exemple, un film n'a qu'une date de sortie, mais il peut comporter plusieurs acteurs.isSortable
: indique que la propriété peut être utilisée pour le tri. Ce n'est pas le cas pour les propriétés reproductibles. Par exemple, les résultats de cinéma peuvent être triés par date de sortie ou par type d'audience.isFacetable
: indique que la propriété peut être utilisée pour générer des attributs. Un attribut permet d'affiner les résultats de recherche grâce auxquels l'utilisateur voit les résultats initiaux, puis ajoute des critères, ou attributs, pour les affiner encore. Cette option ne peut pas être définie sur "true" pour les propriétés dont le type est un objet et surisReturnable
sur "true" pour définir cette option. Enfin, cette option n'est compatible qu'avec les propriétés d'énumération, de valeur booléenne et de texte. Par exemple, dans notre exemple de schéma, vous pouvez créergenre
,actorName
,userRating
etmpaaRating
pour la fonctionnalité permettant de les utiliser pour affiner les résultats de recherche de manière interactive.isWildCardSearchable
indique que les utilisateurs peuvent rechercher des caractères génériques dans cette propriété. Cette option n'est disponible que pour les propriétés textuelles.
Ces paramètres de fonctionnalité de recherche générale sont tous des valeurs booléennes. Ils ont tous une valeur par défaut de false
et doivent être définis sur true
pour être utilisés.
Le tableau suivant présente les paramètres booléens définis sur true
pour toutes les propriétés de l'objet movie
:
Propriété | isReturnable |
isRepeatable |
isSortable |
isFacetable |
isWildcardSearchable |
---|---|---|---|---|---|
movieTitle |
true | true | |||
releaseDate |
true | true | |||
genre |
true | true | true | ||
duration |
true | ||||
actorName |
true | true | true | true | |
userRating |
true | true | |||
mpaaRating |
true | true |
genre
et actorName
ont été définis isRepeatable
sur true
, car un film peut appartenir à plusieurs genres et comporte généralement plusieurs acteurs. Une propriété ne peut pas être triable si elle est reproductible ou contenue dans un sous-objet reproductible.
Définir un type
La section de référence PropertyDefinition répertorie plusieurs xxPropertyOptions
, où xx
est un type spécifique, par exemple boolean
. Pour définir le type de données de la propriété, vous devez définir l'objet de type de données approprié. La définition d'un objet de type de données pour une propriété établit le type de données de cette propriété. Par exemple, la définition de textPropertyOptions
pour la propriété movieTitle
indique que le titre du film est de type texte. L'extrait de code suivant montre la propriété movieTitle
avec textPropertyOptions
définissant le type de données.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
...
},
...
},
Une propriété ne peut être associée qu'à un seul type de données. Par exemple, dans notre schéma de film, releaseDate
ne peut être qu'une date (par exemple, 2016-01-13
) ou d'une chaîne (par exemple, January 13, 2016
), mais pas les deux.
Voici les objets de type de données permettant de spécifier les types de données pour les propriétés dans l'exemple de schéma de film:
Propriété | Objet de type données |
---|---|
movieTitle |
textPropertyOptions |
releaseDate |
datePropertyOptions |
genre |
enumPropertyOptions |
duration |
textPropertyOptions |
actorName |
textPropertyOptions |
userRating |
integerPropertyOptions |
mpaaRating |
textPropertyOptions |
Le type de données que vous choisissez pour la propriété dépend de vos cas d'utilisation attendus.
Dans le scénario imaginé de ce schéma de film, les utilisateurs doivent vouloir trier les résultats par ordre chronologique. releaseDate
est donc un objet de date.
Si, par exemple, il était courant de comparer les releases de décembre entre les années et les releases de janvier, un format de chaîne peut s'avérer utile.
Configurer des options spécifiques au type
La section de référence PropertyDefinition renvoie vers des options pour chaque type. La plupart des options spécifiques au type sont facultatives, à l'exception de la liste des possibleValues
dans le fichier enumPropertyOptions
. De plus, l'option orderedRanking
vous permet de classer les valeurs les unes par rapport aux autres. L'extrait de code suivant montre la propriété movieTitle
avec textPropertyOptions
définissant le type de données et avec l'option spécifique au type retrievalImportance
.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
...
},
...
}
Voici les options supplémentaires spécifiques au type utilisées dans l'exemple de schéma:
Propriété | Type | Options spécifiques au type |
---|---|---|
movieTitle |
textPropertyOptions |
retrievalImportance |
releaseDate |
datePropertyOptions |
|
genre |
enumPropertyOptions |
|
duration |
textPropertyOptions |
|
actorName |
textPropertyOptions |
|
userRating |
integerPropertyOptions |
orderedRanking , maximumValue |
mpaaRating |
textPropertyOptions |
Définir les options de l'opérateur
Outre les options par type, chaque type est associé à un ensemble facultatif de méthodes operatorOptions
. Ces options décrivent comment la propriété est utilisée en tant qu'opérateur de recherche. L'extrait de code suivant montre la propriété movieTitle
avec textPropertyOptions
définissant le type de données, et avec les options spécifiques au type retrievalImportance
et operatorOptions
.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "title"
}
},
...
}
Chaque operatorOptions
possède un operatorName
, tel que title
pour un movieTitle
. Le nom de l'opérateur est l'opérateur de recherche de la propriété. L'opérateur de recherche correspond au paramètre que vous prévoyez d'utiliser lorsque les utilisateurs affinent une recherche. Par exemple, pour rechercher des films en fonction de leur titre, l'utilisateur doit saisir title:movieName
, où movieName
est le nom d'un film.
Le nom de l'opérateur ne doit pas nécessairement être identique au nom de la propriété. Utilisez plutôt les noms d'opérateurs qui reflètent les mots les plus couramment utilisés par les utilisateurs de votre organisation. Par exemple, si vos utilisateurs préfèrent le terme "nom" au lieu de "titre" pour un titre de film, le nom de l'opérateur doit être défini sur "nom".
Vous pouvez utiliser le même nom d'opérateur pour plusieurs propriétés, à condition que toutes les propriétés soient résolues avec le même type. Lorsque vous utilisez un nom d'opérateur partagé lors d'une requête, toutes les propriétés utilisant ce nom d'opérateur sont récupérées. Par exemple, supposons que l'objet "movie" ait des propriétés plotSummary
et plotSynopsis
, et que chacune de ces propriétés ait un operatorName
de plot
. Tant que ces deux propriétés sont du texte (textPropertyOptions
), une seule requête à l'aide de l'opérateur de recherche plot
les récupère.
Outre operatorName
, les propriétés qui peuvent être triées peuvent comporter des champs lessThanOperatorName
et greaterThanOperatorName
dans operatorOptions
.
Les utilisateurs peuvent utiliser ces options pour créer des requêtes basées sur des comparaisons avec une valeur envoyée.
Enfin, textOperatorOptions
comporte un champ exactMatchWithOperator
dans operatorOptions
. Si vous définissez exactMatchWithOperator
sur true
, la chaîne de requête doit correspondre à la valeur totale de la propriété, et pas seulement à l'intérieur du texte.
La valeur textuelle est traitée comme une valeur atomique dans les recherches d'opérateurs et les correspondances d'attributs.
Par exemple, envisagez d'indexer des objets "Book" ou "Movie" avec des propriétés de genre.
Genres possibles : "Science-Fiction", "Science" et "Fiction". Si la valeur de l'attribut exactMatchWithOperator
est false
ou si elle est omise, la recherche d'un genre ou la sélection d'un attribut de science peut également renvoyer des résultats pour"Science, Fiction"et"Science", ainsi que des jetons.
Lorsque exactMatchWithOperator
est défini sur true
, le texte est traité comme un jeton unique. Il n'y a donc pas de correspondance entre "Science" et "Fiction".
Ajouter la section displayOptions
Une section displayOptions
facultative est disponible à la fin de toute section propertyDefinition
. Cette section contient une chaîne displayLabel
.
displayLabel
est un libellé de texte recommandé et facile à utiliser pour l'établissement. Si la propriété est configurée pour l'affichage à l'aide de ObjectDisplayOptions, cette étiquette est affichée devant la propriété. Si la propriété est configurée pour l'affichage et que displayLabel
n'est pas défini, seule la valeur de la propriété est affichée.
L'extrait suivant montre la propriété movieTitle
avec un displayLabel
défini sur 'Title'.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "title"
}
},
"displayOptions": {
"displayLabel": "Title"
}
},
Voici les valeurs displayLabel
pour toutes les propriétés de l'objet movie
dans l'exemple de schéma:
Propriété | displayLabel |
---|---|
movieTitle |
Title |
releaseDate |
Release date |
genre |
Genre |
duration |
Run length |
actorName |
Actor |
userRating |
Audience score |
mpaaRating |
MPAA rating |
Enregistrer votre schéma
Pour que les données structurées soient renvoyées par les requêtes Cloud Search, vous devez enregistrer votre schéma auprès du service de schéma Cloud Search. Pour enregistrer un schéma, vous devez disposer de l'ID de source de données obtenu lors de l'étape Initialiser une source de données.
À l'aide de l'ID de source de données, envoyez une requête UpdateSchema pour enregistrer votre schéma.
Comme indiqué sur la page de référence UpdateSchema, exécutez la requête HTTP suivante pour enregistrer votre schéma:
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
Le corps de votre requête doit contenir les éléments suivants:
{ "validateOnly": // true or false, "schema": { // ... Your complete schema object ... } }
Utilisez l'option validateOnly
pour tester la validité de votre schéma sans l'enregistrer.
Indexer vos données
Une fois le schéma enregistré, renseignez la source de données à l'aide d'appels Index. L'indexation est normalement effectuée dans votre connecteur de contenu.
Avec le schéma de film, une requête d'indexation de l'API REST pour un seul film se présente comme suit:
{
"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"
}
Notez que la valeur de movie
dans le champ objectType
correspond au nom de la définition d'objet dans le schéma. En faisant correspondre ces deux valeurs, Cloud Search sait quel objet de schéma utiliser lors de l'indexation.
Notez également que l'indexation de la propriété de schéma releaseDate
utilise les sous-propriétés de year
, month
et day
dont elle hérite, car elle est définie en tant que type de données date
, car elle utilise datePropertyOptions
.
Toutefois, comme year
, month
et day
ne sont pas définis dans le schéma, vous ne pouvez pas interroger l'une de ces propriétés (par exemple, year
) séparément.
Notez également comment la propriété reproductible actorName
est indexée en utilisant une liste de valeurs.
Identifier les éventuels problèmes d'indexation
Les deux problèmes les plus courants liés aux schémas et à l'indexation sont les suivants:
Votre requête d'indexation contient un objet de schéma ou un nom de propriété qui n'a pas été enregistré auprès du service de schéma. Ce problème entraîne l'exclusion de la propriété ou de l'objet.
Votre requête d'indexation comporte une propriété dont le type a une valeur différente de celui enregistré dans le schéma. Ce problème entraîne l'affichage d'une erreur par Cloud Search au moment de l'indexation.
Tester votre schéma avec plusieurs types de requêtes
Avant d'enregistrer votre schéma pour un dépôt de données de production volumineux, envisagez de le tester avec un dépôt de données de test plus petit. Tester avec un dépôt de test plus petit vous permet d'ajuster rapidement votre schéma et de supprimer les données indexées, sans impact sur un index plus volumineux ou sur un index de production existant. Pour un dépôt de données de test, créez une liste de contrôle d'accès qui n'autorise qu'un utilisateur de test, afin que les autres utilisateurs ne puissent pas voir ces données dans les résultats de recherche.
Pour créer une interface de recherche afin de valider les requêtes de recherche, consultez l'interface de recherche.
Cette section contient plusieurs exemples de requêtes que vous pouvez utiliser pour tester un schéma de film.
Tester avec une requête générique
Une requête générique renvoie tous les éléments de la source de données contenant une chaîne spécifique. Dans une interface de recherche, vous pouvez exécuter une requête générique sur une source de données de films en saisissant le mot "titanic" et en appuyant sur Entrée. Tous les films contenant le mot "titanic" doivent être renvoyés dans les résultats de recherche.
Effectuer un test avec un opérateur
L'ajout d'un opérateur à la requête limite les résultats aux éléments correspondant à cette valeur d'opérateur. Par exemple, vous pouvez utiliser l'opérateur actor
pour rechercher tous les films avec un acteur spécifique. À l'aide d'une interface de recherche, vous pouvez effectuer cette requête d'opérateur en saisissant simplement une paire operator=valeur, telle que "actor:Zane", puis en appuyant sur Entrée. Tous les films dont Zane est un acteur doivent être renvoyés dans les résultats de recherche.
Ajuster votre schéma
Une fois votre schéma et vos données utilisés, continuez de surveiller ce qui fonctionne et ce qui ne fonctionne pas pour vos utilisateurs. Nous vous conseillons d'ajuster votre schéma dans les cas suivants:
- Indexer un champ qui n'a pas été indexé auparavant Par exemple, si vos utilisateurs recherchent de façon répétée des films en fonction du nom du réalisateur, vous pouvez ajuster votre schéma pour qu'il prenne en charge le nom du réalisateur.
- Modification du nom des opérateurs de recherche en fonction des commentaires des utilisateurs Les noms d'opérateur sont conçus pour être faciles à utiliser. Si vos utilisateurs se remémorent systématiquement un mauvais nom d'opérateur, vous pouvez envisager de le modifier.
Réindexation après une modification du schéma
La modification de l'une des valeurs suivantes dans votre schéma ne nécessite pas de réindexer vos données. Il vous suffit d'envoyer une nouvelle requête UpdateSchema pour que votre index continue de fonctionner:
- Noms d'opérateurs.
- Entiers comportant les valeurs minimale et maximale de l'entier.
- Classement ordonné et entier.
- Options d'actualisation
- Options d'affichage
Pour les modifications suivantes, les données précédemment indexées continueront de fonctionner selon le schéma précédemment enregistré. Toutefois, vous devez réindexer les entrées existantes pour voir les modifications basées sur le schéma mis à jour si elles incluent les changements suivants:
- Ajouter ou supprimer une propriété ou un objet
- Remplacement de
isReturnable
,isFacetable
ouisSortable
defalse
partrue
.
Vous devez définir isFacetable
ou isSortable
sur true
uniquement si vous avez un cas d'utilisation et un besoin évidents.
Enfin, lorsque vous mettez à jour votre schéma en marquant une propriété isSuggestable
, vous devez réindexer vos données, ce qui entraîne un retard d'utilisation de la saisie semi-automatique pour cette propriété.
Modifications de propriété non autorisées
Certaines modifications de schéma ne sont pas autorisées, même si vous réindexez vos données, car elles altèrent l'index ou donnent lieu à des résultats de recherche médiocres ou incohérents. Voici quelques exemples de modifications:
- Type de données de la propriété.
- Nom de propriété
- Paramètre
exactMatchWithOperator
.
Toutefois, il existe un moyen de contourner cette limitation.
Effectuer une modification complexe du schéma
Pour éviter les modifications susceptibles de générer de mauvais résultats de recherche ou un index de recherche non fonctionnel, Cloud Search empêche certains types de changements dans les requêtes UpdateSchema une fois le dépôt indexé. Par exemple, le type ou le nom de données d'une propriété ne peuvent pas être modifiés après leur définition. Vous ne pouvez pas effectuer ces modifications via une simple requête UpdateSchema, même si vous réindexez vos données.
Dans les cas où vous devez apporter une modification interdit à votre schéma, vous pouvez souvent apporter une série de modifications autorisées qui produisent le même effet. En général, il faut d'abord migrer les propriétés indexées d'une définition d'objet plus ancienne vers une plus récente, puis envoyer une requête d'indexation qui n'utilise que la propriété la plus récente.
Pour modifier le type de données ou le nom d'une propriété, procédez comme suit:
- Ajoutez une propriété à la définition d'objet dans votre schéma. Utilisez un nom différent de celui de la propriété à modifier.
- Émettez la requête UpdateSchema avec la nouvelle définition. N'oubliez pas d'envoyer l'intégralité du schéma, y compris la nouvelle et l'ancienne propriété, dans la requête.
Remplir l'index à partir du dépôt de données Pour remplir l'index, envoyez toutes les requêtes d'indexation à l'aide de la nouvelle propriété, mais pas l'ancienne, car cela entraînerait une double comptabilisation des correspondances de requête.
- Lors du remplissage de l'indexation, recherchez la nouvelle propriété et utilisez l'ancienne propriété par défaut pour éviter tout comportement incohérent.
- Une fois le remplissage terminé, exécutez des requêtes de test pour vérifier.
Supprimez l'ancienne propriété. Émettez une autre requête UpdateSchema sans l'ancien nom de propriété et cessez d'utiliser l'ancien nom dans les futures requêtes d'indexation.
Effectuez la migration de l'ancienne propriété vers la nouvelle. Par exemple, si vous modifiez le nom de la propriété de "créateur" à "auteur", vous devez mettre à jour votre code de requête pour utiliser l'auteur où il avait référencé précédemment le créateur.
Cloud Search conserve une trace de toute propriété ou objet supprimé pendant 30 jours afin d'éviter toute réutilisation pouvant entraîner des résultats d'indexation inattendus. Dans ce délai de 30 jours, vous devez cesser d'utiliser l'objet ou la propriété supprimés, y compris les abandonner pour les requêtes d'indexation ultérieures. Si vous décidez ultérieurement de rétablir cette propriété ou cet objet, vous pourrez ainsi assurer l'exactitude de votre index.
Connaître les limites de taille
Cloud Search impose des limites à la taille des objets de données structurées et des schémas. Ces limites sont:
- Le nombre maximal d'objets de niveau supérieur est de 10 objets.
- La profondeur maximale d'une hiérarchie de données structurées est de 10 niveaux.
- Le nombre total de champs d'un objet est limité à 1 000. Ce nombre inclut le nombre de champs primitifs et la somme des champs de chaque objet imbriqué.
Étapes suivantes
Voici quelques étapes que vous pouvez également suivre :
Créez une interface de recherche pour tester votre schéma.
Ajustez votre schéma pour améliorer la qualité de la recherche.
Structurez un schéma pour optimiser l'interprétation des requêtes.
Découvrez comment exploiter le schéma
_dictionaryEntry
pour définir des synonymes pour les termes couramment utilisés dans votre entreprise. Pour utiliser le schéma_dictionaryEntry
, consultez la page Définir des synonymes.Créez un connecteur.