Un schéma Google Cloud Search est une structure JSON qui définit des objets, des propriétés et des options à utiliser dans l'indexation et l'interrogation de vos données. Le connecteur de contenu lit les données de votre référentiel et, en fonction de vos schéma enregistré, structure et indexe les données.
Vous pouvez créer un schéma en fournissant un objet de schéma JSON à l'API puis de l'enregistrer. Vous devez enregistrer un objet de schéma pour chacun de vos dépôts avant de pouvoir indexer vos données.
Ce document aborde les principes de base de la création de schémas. Pour savoir comment pour ajuster votre schéma afin d'améliorer l'expérience de recherche, consultez Améliorez la qualité de la recherche.
Créer un schéma
Voici une liste d'étapes à suivre pour créer votre schéma Cloud Search:
- Identifier le comportement attendu des utilisateurs
- 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
- Régler votre schéma
Identifier le comportement attendu des utilisateurs
Anticiper les types de requêtes de vos utilisateurs vous aide à orienter votre stratégie. pour créer votre schéma.
Par exemple, lors de l'envoi de requêtes à une base de données de films, vous pourriez vous attendre une requête telle que "Montre-moi tous les films avec Robert Redford" par l'utilisateur. Votre schéma doit donc prendre en charge les résultats des requêtes basées sur "tous les films avec un acteur spécifique. »
Pour définir votre schéma de façon à refléter les modèles de comportement de vos utilisateurs, envisagez effectuant ces tâches:
- Évaluer un ensemble varié de requêtes souhaitées provenant de différents utilisateurs.
- Identifier les objets pouvant être utilisés dans les requêtes. Les objets sont logiques jeux de données liées, tels qu'un film dans une base de données de films.
- Identifier 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 désignent les attributs indexables de l'objet. elles peuvent inclure des valeurs primitives ou d'autres objets. Par exemple, un objet "movie" peut comporter des propriétés telles que le titre du film et date de sortie sous forme de valeurs primitives. L'objet "movie" peut également contenir d'autres des objets, tels que les acteurs, qui possèdent leurs propres propriétés, son nom ou son rôle.
- Identifiez des exemples de valeurs valides pour les propriétés. Les valeurs correspondent aux données réelles pour une propriété. Par exemple, le titre d'un film dans votre base de données pourrait être "Les Aventuriers de l'Arche perdue".
- Déterminez les options de tri et de classement souhaitées par vos utilisateurs. Par exemple : Lorsqu'ils interrogent les films, les utilisateurs peuvent vouloir trier chronologiquement et classer par évaluation du public et n'ont pas besoin de les trier par ordre alphabétique.
- (Facultatif) Déterminez si l'une de vos propriétés représente un le contexte dans lequel les recherches peuvent être exécutées, tel que l'état poste ou ce qui permet de proposer des suggestions de saisie semi-automatique en fonction le contexte. Par exemple, pour les personnes recherchant une base de données de films, les utilisateurs pourraient ne s'intéresser qu'à un certain genre de films. Les utilisateurs définiraient ce que genre qu'ils souhaitent voir apparaître dans leurs recherches, peut-être en tant que profil. Ensuite, lorsqu'un utilisateur commence à taper une requête de films, uniquement des films dans leur genre préféré, comme les « films d'action », sont suggérés en tant que des suggestions de saisie semi-automatique.
- Dressez la liste des objets, propriétés et exemples de valeurs suivants utilisés dans les recherches. (Pour en savoir plus sur l'utilisation de cette liste, consultez la section Définir les options d'opérateur.)
Initialiser votre 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, se référer à Gérer des sources de données tierces
Les résultats de recherche d'un utilisateur sont renvoyés à partir de la source de données. Lorsqu'un utilisateur clique sur un résultat de recherche, Cloud Search redirige l'utilisateur vers l'élément en question à l'aide de l' URL fournie dans la requête d'indexation.
Définir vos objets
L'unité de données fondamentale dans un schéma est l'objet, également appelé "schéma" objet", qui est une structure logique de données. Dans une base de données de films, un la structure logique des données est « movie ». Un autre objet pourrait être "personne". à représentent les acteurs et l'équipe impliqués dans le film.
Chaque objet d'un schéma possède une série de propriétés, ou attributs, qui : décrire l'objet, comme 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 propriétés des valeurs ou d'autres objets.
La figure 1 présente les objets "movie" (film) et "person" (personne), ainsi que les objets associés propriétés.
![Dessin de connexions de schéma entre entités](https://developers-dot-devsite-v2-prod.appspot.com/static/cloud-search/images/schemaExample.png?authuser=5&hl=fr)
Un schéma Cloud Search est
essentiellement une liste d'instructions de définition d'objet définies dans
Balise objectDefinitions
. L'extrait de schéma suivant montre
Les instructions objectDefinitions
pour les objets de schéma "movie" et "person".
{
"objectDefinitions": [
{
"name": "movie",
...
},
{
"name": "person",
...
}
]
}
Lorsque vous définissez un objet de schéma, vous fournissez un name
pour l'objet qui doit
être unique parmi tous les autres objets du schéma. Vous utiliserez généralement un name
qui décrit l'objet, par exemple movie
pour un objet "movie". Le schéma
utilise le champ name
comme identifiant de clé pour les objets indexables. Pour
Pour en savoir plus sur le champ name
, consultez
Définition des objets.
Définir les propriétés des objets
Comme indiqué dans la documentation de référence
ObjectDefinition,
le nom de l'objet est suivi d'une série
options
,
et une liste de
propertyDefinitions
.
La
options
peut
se composent
freshnessOptions
et
displayOptions
La
freshnessOptions
servent à ajuster le classement dans les résultats de recherche en fonction de l'actualisation d'un article. La
displayOptions
sont utilisés pour déterminer si des libellés et des propriétés spécifiques s'affichent dans
les résultats de recherche
d'un objet.
La
propertyDefinitions
permet de définir les propriétés d'un objet, comme le titre du film
et sa date de sortie.
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 PropertyDefinition comprend les éléments suivants:
- Une chaîne
name
. - Une liste d'options indépendantes du type, telles que
isReturnable
dans les extrait. - Un type et ses options spécifiques au type associées
comme
textPropertyOptions
etretrievalImportance
dans l'extrait précédent. - Un élément
operatorOptions
décrivant comment la propriété est utilisée un opérateur de recherche. - Un ou plusieurs
displayOptions
, tels quedisplayLabel
dans l'extrait précédent.
Le name
d'une propriété doit être unique dans l'objet qui le contient.
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 de nouveau dans le sous-objet filmography
de
person
. Ce schéma réutilise le champ movieTitle
afin que le schéma puisse accepter 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 dans lequel a joué un acteur.
De même, le schéma réutilise le champ releaseDate
, car il possède la même valeur
pour les deux champs movieTitle
.
Lorsque vous développez votre propre schéma, réfléchissez à la manière dont votre dépôt aurait pu être lié qui contiennent des données que vous souhaitez déclarer plusieurs fois dans votre schéma.
Ajouter des options indépendantes du type
La PropertyDefinition Répertorie les options générales des fonctionnalités de recherche 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 renvoyées dans les résultats de recherche via l'API Query. Tous les exemples de films peuvent être renvoyées. Les propriétés non renvoyables peuvent être utilisées pour la recherche ni de classement des résultats sans être renvoyés à l'utilisateur.isRepeatable
: indique si plusieurs valeurs sont autorisées pour la propriété. Pour Par exemple, un film n'a qu'une seule date de sortie, mais peut avoir plusieurs acteurs.isSortable
: indique que la propriété peut être utilisée pour le tri. Ce ne peut pas être "true" pour les propriétés reproductibles. Par exemple, des résultats de films peuvent être triées par date de sortie ou par classification de l'audience.isFacetable
: indique que la propriété peut être utilisée pour générer des attributs. Un attribut est utilisé pour affiner les résultats de recherche où l'utilisateur voit les résultats initiaux et ajoute ensuite des critères, ou attributs, pour les affiner davantage résultats. Cette option ne peut pas avoir la valeur "true" pour les propriétés dont le type est "object" et Pour définir cette option,isReturnable
doit être défini sur "true". Enfin, cette option n'est disponible compatible avec les propriétés d'énumération, de booléen et de texte. Dans notre exemple de schéma, Ajout d'attributs àgenre
,actorName
,userRating
etmpaaRating
pour leur permettre de : être utilisée pour affiner de manière interactive les résultats de recherche.isWildcardSearchable
indique que les utilisateurs peuvent effectuer une recherche avec caractères génériques cette propriété. Cette option n'est disponible que dans les propriétés de texte. Fonctionnement des caractères génériques fonctionne sur le champ de texte dépend de la valeur définie dans le exactMatchWithOperator. SiexactMatchWithOperator
est défini surtrue
, la valeur textuelle est tokenisée sous la forme d'une valeur atomique et une recherche avec caractère générique est a été effectuée. Par exemple, si la valeur textuelle estscience-fiction
, une requête génériquescience-*
y correspond. SiexactMatchWithOperator
est défini surfalse
, la valeur de texte est tokenisée et une recherche avec caractères génériques est effectuée sur chaque jeton. Par exemple, si la valeur textuelle est "science-fiction", le caractère générique si la requêtesci*
oufi*
correspond à l'élément, mais passcience-*
.
Ces paramètres de fonctionnalité de recherche générale sont tous des valeurs booléennes. cette
ont tous la valeur par défaut false
et doivent être définis sur true
à utiliser.
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 |
Pour genre
et actorName
, isRepeatable
est défini sur true
car un film peut appartenir à plusieurs genres et possède généralement
plusieurs acteurs. Une propriété ne peut pas être triée si elle est reproductible
ou contenues dans un sous-objet reproductible.
Définir le type
La
PropertyDefinition
la section de référence répertorie plusieurs xxPropertyOptions
, où xx
est un type spécifique,
comme 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é. Définir un objet de type de données pour une propriété
détermine le type de données de cette propriété. Par exemple, définir
textPropertyOptions
pour la propriété movieTitle
indique que le film
title est de type texte. L'extrait 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 film,
schéma, releaseDate
ne peut être qu'une date (par exemple, 2016-01-13
) ou une chaîne
(par exemple, January 13, 2016
), mais pas les deux.
Voici les objets de type de données utilisés pour spécifier les types de données pour dans l'exemple de schéma de film:
Propriété | Objet de type de 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 prévus.
Dans le scénario fictif de ce schéma de films, on s'attend à ce que les utilisateurs
pour trier les résultats chronologiquement. releaseDate
est donc un objet de date.
Si, par exemple, le cas d'utilisation prévu était de comparer les versions de décembre
au fil des années avec les sorties de janvier, un format de chaîne peut être utile.
Configurer des options spécifiques au type
La
PropertyDefinition
la section de référence contient des liens vers les options pour chaque type. Le plus spécifique au type
sont facultatives, à l'exception de la liste possibleValues
dans
enumPropertyOptions
De plus, l'option orderedRanking
vous permet de :
classer les valeurs les unes
par rapport aux autres. La
l'extrait suivant montre la propriété movieTitle
avec textPropertyOptions
en 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 spécifiques au type supplémentaires 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 d'opérateur
En plus des options propres au type, chaque type dispose d'un ensemble d'options
operatorOptions
Ces options décrivent la façon dont la propriété est utilisée
un opérateur de recherche. L'extrait suivant montre la propriété movieTitle
avec
textPropertyOptions
définissant le type de données et avec
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
, comme title
pour une
movieTitle
Le nom de l'opérateur est l'opérateur de recherche associé à la propriété. A
l'opérateur de recherche est le paramètre réel que les utilisateurs sont censés utiliser
pour affiner une recherche. Par exemple, pour rechercher des films en fonction de leur titre,
l'utilisateur saisit title:movieName
, où movieName
est le nom d'un film.
Les noms d'opérateur ne doivent pas nécessairement être identiques au nom de la propriété. À la place, vous devez utiliser des noms d’opérateurs qui reflètent les mots les plus courants utilisés par les utilisateurs de votre organisation. Par exemple, si vos utilisateurs préfèrent le terme "name" au lieu de "title" pour un titre de film, le nom de l'opérateur doit être défini sur "name".
Vous pouvez utiliser le même nom d'opérateur pour plusieurs propriétés,
les propriétés renvoient au même type. Si vous utilisez un nom d'opérateur partagé
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 plotSummary
et plotSynopsis
propriétés. Chacune de ces propriétés présente une valeur operatorName
de plot
. En tant que
tant que ces deux propriétés sont du texte (textPropertyOptions
), une seule propriété
à l'aide de l'opérateur de recherche plot
les récupère tous les deux.
En plus de operatorName
, les propriétés pouvant être triées peuvent avoir
Champs lessThanOperatorName
et greaterThanOperatorName
dans operatorOptions
.
Les utilisateurs peuvent utiliser ces options pour créer des requêtes basées sur des comparaisons avec
la valeur envoyée.
Enfin, textOperatorOptions
comporte un champ exactMatchWithOperator
operatorOptions
Si vous
définissez exactMatchWithOperator
sur true
, la chaîne de requête doit
correspondent à la valeur entière de la propriété, et pas seulement dans le texte.
La valeur textuelle est traitée comme une valeur atomique dans les recherches avec opérateur.
des correspondances d'attributs.
Par exemple, envisagez d'indexer les objets "Book" ou "Movie" avec des propriétés de genre.
Le genre peut inclure "Science-Fiction", "Science" et "Fiction". Avec
exactMatchWithOperator
définie sur false
ou omise
en recherchant
un genre ou
en sélectionnant l'onglet "Science", ou "Fiction" facette ferait aussi
renvoyer les résultats pour "Science-Fiction" car le texte est tokenisé.
"Science" et "Fiction" existent dans "Science-Fiction".
Lorsque exactMatchWithOperator
est défini sur true
,
le texte est traité comme un jeton unique. Par conséquent, ni l'un, ni l'autre
"Science" ni "Fiction" correspond à "Science-Fiction".
(Facultatif) Ajouter la section displayOptions
Vous trouverez une section displayOptions
facultative à la fin de chaque
propertyDefinition
. Cette section contient une chaîne displayLabel
.
displayLabel
est un libellé de texte recommandé et convivial
pour la propriété. Si la propriété est configurée pour l'affichage à l'aide de
ObjectDisplayOptions,
ce libellé s'affiche devant la propriété. Si la propriété est configurée
pour l'affichage et displayLabel
n'est pas défini, seule la valeur de la propriété est
affiché.
L'extrait suivant montre la propriété movieTitle
avec une displayLabel
défini sur "Titre".
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "title"
}
},
"displayOptions": {
"displayLabel": "Title"
}
},
Vous trouverez ci-dessous les valeurs displayLabel
pour toutes les propriétés de 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 |
(Facultatif) Ajouter une section suggestionFilteringOperators[]
Il existe une option
suggestionFilteringOperators[]
à la fin de toute section propertyDefinition
. Utilisez cette section pour
définir une propriété pour filtrer les suggestions de saisie semi-automatique. Par exemple :
peut définir l'opérateur genre
pour filtrer les suggestions en fonction de l'expérience de l'utilisateur
genre de film préféré. Ensuite, lorsque l'utilisateur saisit sa requête de recherche, seuls ceux
les films correspondant au genre souhaité s'affichent lors de la saisie semi-automatique.
des suggestions.
Enregistrer votre schéma
Pour que des données structurées soient renvoyées par les requêtes Cloud Search, vous devez vous enregistrer votre schéma avec le service de schéma Cloud Search. L'enregistrement d'un schéma nécessite l'ID de la source de données que vous avez obtenu lors de Initialisez une source de données.
À l'aide de l'ID de la source de données, émettez une UpdateSchema pour enregistrer votre schéma.
Comme indiqué dans le UpdateSchema page de référence, envoyez 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 réellement.
Indexer vos données
Une fois votre schéma enregistré, remplissez la source de données à l'aide de Indexer appels. L'indexation s'effectue normalement dans le connecteur de contenu.
À l'aide du 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 à l'objet
du nom de la définition dans le schéma. En faisant correspondre ces deux valeurs, Cloud Search sait
l'objet de schéma à utiliser lors de l'indexation.
Notez également que l'indexation de la propriété de schéma releaseDate
utilise
sous-propriétés de year
, month
et day
, dont elle hérite, car il s'agit
défini en tant que type de données date
via datePropertyOptions
pour le définir.
Cependant, comme year
, month
et day
ne sont pas définis dans le schéma, vous
ne peuvent pas exécuter de requête sur l'une de ces propriétés (par exemple, year
) individuellement.
Notez également que la propriété reproductible actorName
est indexée à l'aide d'une liste
de valeurs.
Identification des problèmes d'indexation potentiels
Les deux problèmes les plus courants liés aux schémas et à l'indexation sont les suivants:
Votre demande d'indexation contient un objet de schéma ou un nom de propriété qui n'était pas enregistré auprès du service de schéma. Ce problème a pour conséquence que la propriété ou l'objet à ignorer.
Votre demande d'indexation comporte une propriété dont la valeur de type est différente de celle du type dans le schéma. Ce problème amène Cloud Search à renvoyer une erreur 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 d'effectuer les tests dans un dépôt de données de test plus petit. Effectuer un test avec un dépôt de test plus petit vous permet d'ajuster rapidement votre schéma, et supprimer les données indexées, sans que cela n'affecte un index plus important ou un index de production existant. Pour un référentiel de données test, créez Une LCA qui autorise uniquement un utilisateur 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 des requêtes de recherche, reportez-vous à 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 . À l'aide d'une interface de recherche, vous pouvez exécuter une requête générique sur un film en saisissant le mot "titanic" et en appuyant sur Entrée. Tout films avec le mot "titanic" doivent figurer dans les résultats de recherche.
Tester avec un opérateur
L'ajout d'un opérateur à la requête limite les résultats aux éléments correspondant à cet
. Par exemple, vous pouvez utiliser l'opérateur actor
pour rechercher
tous les films avec un acteur particulier. À l'aide d'une interface de recherche, vous pouvez effectuer
cette requête avec opérateur en saisissant simplement une paire opérateur=valeur, telle que
"actor:Zane" et appuyer sur "actor:Zane". Tous les films avec Zane en tant qu'acteur
doivent figurer dans les résultats de recherche.
Régler votre schéma
Une fois votre schéma et vos données utilisés, continuez à surveiller ce qui fonctionne et de ne pas fonctionner pour vos utilisateurs. Vous devez envisager d'ajuster votre schéma dans les situations suivantes:
- Indexation d'un champ qui n'avait pas encore été indexé. Par exemple, vos utilisateurs peut rechercher plusieurs fois des films en fonction du nom du réalisateur. Par conséquent, Ajustez votre schéma pour prendre en charge le nom du réalisateur en tant qu'opérateur.
- Modification du nom des opérateurs de recherche en fonction des commentaires des utilisateurs. Les noms d'opérateurs sont censé être convivial. Si vos utilisateurs "se souviennent" régulièrement le mauvais vous pouvez envisager de le modifier.
Réindexation après une modification du schéma
La modification des valeurs suivantes dans votre schéma ne nécessite pas de réindexer vos données. Il vous suffit d'envoyer UpdateSchema et votre index continuera de fonctionner:
- Noms d'opérateurs.
- Valeurs entières minimales et maximales.
- Classement ordonné par entier et par énumération.
- Options d'actualisation.
- Options d'affichage
Pour les modifications suivantes, les données précédemment indexées continueront de fonctionner. en fonction du schéma précédemment enregistré. Cependant, vous devez réindexer les entrées existantes pour voir les modifications basées sur le nouveau schéma si ces modifications:
- Ajout ou suppression d'une propriété ou d'un objet
- Changer
isReturnable
,isFacetable
ouisSortable
en remplaçantfalse
partrue
Vous devez définir isFacetable
ou isSortable
sur true
uniquement si vous avez un
un cas d'utilisation et un besoin clairs.
Enfin, lorsque vous mettez à jour votre schéma en marquant une propriété isSuggestable
,
vous devez réindexer vos données, ce qui retarde l'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 endommageront l'index, ou produiront des résultats de recherche incohérents ou de mauvaise qualité. Ces inclure les modifications apportées aux éléments suivants:
- Type de données de propriété.
- Nom de propriété
- Paramètre
exactMatchWithOperator
. - Paramètre
retrievalImportance
.
Il existe toutefois un moyen de contourner cette limitation.
Effectuer une modification de schéma complexe
Pour éviter les modifications susceptibles de générer de mauvais résultats de recherche ou d'interrompre la recherche de l'index Google, Cloud Search empêche certains types de modifications UpdateSchema après l'indexation du dépôt. Par exemple, le type de données ou le nom d'une propriété ne peut pas être modifié une fois qu'il a été défini. Ces modifications n'est pas réalisable via une simple UpdateSchema même si vous réindexez vos données.
Dans les cas où vous devez apporter une modification non autorisée à votre vous pouvez effectuer une série de modifications autorisées pour atteindre le même l'effet. En général, cela implique de migrer d'abord les propriétés indexées d'une ancienne définition d'objet à une définition 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 autre de la propriété que vous souhaitez modifier.
- Émettre le UpdateSchema avec la nouvelle définition. N'oubliez pas d'envoyer le schéma complet, y compris la nouvelle et l'ancienne propriété dans la requête.
Remplissez l'index à partir du dépôt de données. Pour remplir l'index, envoyez de requêtes d'indexation à l'aide de la nouvelle propriété, mais pas ancienne propriété, car cela entraînerait une double comptabilisation des correspondances de requête.
- Pendant le remplissage d'indexation, vérifiez la nouvelle propriété par défaut sur l'ancienne propriété 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é. Émettre un autre UpdateSchema requête sans l'ancien nom de propriété et cesser d'utiliser l'ancienne propriété dans de futures demandes d'indexation.
Migrez toute utilisation de l'ancienne propriété vers la nouvelle. Par exemple, si si vous modifiez le nom de la propriété et passez de créateur à auteur, vous devez mettre à jour votre requête pour utiliser "author" là où il faisait référence à "creator".
Cloud Search conserve un enregistrement de toute propriété ou de tout objet supprimé pendant 30 jours pour éviter toute réutilisation qui entraînerait des résultats d'indexation inattendus. Pendant ces 30 jours, vous devez cesser d'utiliser les données un objet ou une propriété, y compris en les omettant dans les futures demandes d'index. Ainsi, si vous décidez ultérieurement de rétablir cette propriété ou vous pouvez le faire tout en préservant 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 les suivantes:
- Le nombre maximal d'objets de niveau supérieur est de 10.
- Une hiérarchie de données structurées peut comporter jusqu'à 10 niveaux.
- Le nombre total de champs dans un objet est limité à 1000, qui comprend le nombre de champs primitifs plus la somme du nombre de dans chaque objet imbriqué.
Étapes suivantes
Voici quelques étapes que vous pouvez également suivre :
Créer une interface de recherche pour 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 Schéma
_dictionaryEntry
pour définir des synonymes pour des termes couramment utilisés dans votre entreprise. Pour utiliser la_dictionaryEntry
, consultez Définissez des synonymes.Créez un connecteur.