Un esquema de Google Cloud Search es una estructura JSON que define los objetos, las propiedades y las opciones que se usarán para indexar y consultar tus datos. Tu conector de contenido lee los datos desde tu repositorio y los estructura y los indexa según tu esquema registrado.
Para registrar un esquema debes proporcionar un objeto de esquema JSON a la API y registrarlo. Debes registrar un objeto de esquema para cada uno de tus repositorios antes de indexar tus datos.
En este documento, se incluyen los conceptos básicos de la creación de esquemas. Si quieres obtener información sobre cómo ajustar tu esquema para mejorar la experiencia de búsqueda, consulta Mejora la calidad de la búsqueda.
Crea un esquema
A continuación, se muestra una lista de los pasos que debes seguir para crear tu esquema de Cloud Search:
- Identifica el comportamiento esperado del usuario
- Cómo inicializar una fuente de datos
- Crea un esquema
- Esquema de muestra completo
- Registra tu esquema
- Indexa tus datos
- Cómo probar tu esquema
- Ajusta el esquema
Identifica el comportamiento esperado del usuario
Prever los tipos de consultas que hacen tus usuarios ayuda a orientar tu estrategia para crear el esquema.
Por ejemplo, cuando generes consultas en una base de datos de películas, puedes prever si el usuario realizará una consulta como “Mostrar todas las películas protagonizadas por Robert Redford”. Por lo tanto, tu esquema debe admitir resultados de consultas en función de “todas las películas con un actor específico”.
Si quieres definir tu esquema para que refleje los patrones de comportamiento de tus usuarios, considera realizar las siguientes tareas:
- Evaluar un conjunto diverso de consultas deseadas de diferentes usuarios.
- Identificar los objetos que se podrían usar en las consultas. Los objetos son conjuntos lógicos de datos relacionados, como una película en una base de datos de películas.
- Identificar las propiedades y los valores que componen el objeto y que se podrían usar en las consultas. Las propiedades son los atributos indexables del objeto; pueden incluir valores básicos o también otros proyectos. Por ejemplo, un objeto de película puede tener propiedades como el título de la película y la fecha de estreno como valores básicos. El objeto de película también puede contener otros objetos, como los actores, con sus propiedades, como su nombre o papel.
- Identificar valores de ejemplo válidos para las propiedades. Los valores son los datos reales indexados para una propiedad. Por ejemplo, el título de una película en tu base de datos podría ser “Indiana Jones y los cazadores del arca perdida”.
- Determinar las opciones de ordenamiento y clasificación que desean tus usuarios. Por ejemplo, cuando los usuarios consulten películas, es posible que quieran ordenarlas de forma cronológica y clasificarlas por índice de audiencia en lugar de hacerlo alfabéticamente por título.
- (Opcional) Considera si una de tus propiedades representa un contexto más específico en el que se podrían ejecutar búsquedas, como el puesto o el departamento de los usuarios, de modo que se puedan proporcionar sugerencias de autocompletado según el contexto. Por ejemplo, en el caso de las personas que buscan una base de datos de películas, es posible que solo les interese un género determinado. Los usuarios definirían qué género quieren que muestren sus búsquedas, posiblemente como parte de su perfil de usuario. Luego, cuando un usuario comienza a escribir una consulta de películas, solo se sugieren las películas de su género preferido, como "películas de acción", como parte de las sugerencias de autocompletado.
- Hacer una lista de estos objetos, propiedades y valores de ejemplo que se pueden usar en las búsquedas (Para obtener información sobre cómo se usa esta lista, consulta la sección Define opciones de operador).
Inicializa tu fuente de datos
Una fuente de datos representa los datos de un repositorio que se indexaron y almacenaron en Google Cloud. Para obtener instrucciones sobre cómo inicializar una fuente de datos, consulta Administra fuentes de datos de terceros.
Los resultados de la búsqueda de un usuario se muestran desde la fuente de datos. Cuando un usuario hace clic en un resultado de la búsqueda, Cloud Search dirige al usuario al elemento real mediante la URL proporcionada en la solicitud de indexación.
Define tus objetos
La unidad de datos fundamental en un esquema es el objeto, también llamado “objeto de esquema”, que es una estructura lógica de datos. En una base de datos de películas, una estructura lógica de datos es “película”. Otro objeto podría ser “persona” para representar al reparto y al equipo de la película.
Cada objeto en un esquema tiene una serie de propiedades o atributos que lo describen, como el título y la duración de una película, o el nombre y la fecha de nacimiento de una persona. Las propiedades de un objeto pueden incluir valores básicos o también otros objetos.
La Figura 1 muestra los objetos película y persona, además de las propiedades asociadas.
Los esquemas de Cloud Search son, en esencia, una lista de declaraciones de definiciones de objetos que se determinan dentro de la etiqueta objectDefinitions
. En el siguiente fragmento de esquema, se muestran las declaraciones objectDefinitions
para los objetos del esquema movie y person.
{
"objectDefinitions": [
{
"name": "movie",
...
},
{
"name": "person",
...
}
]
}
Cuando defines un objeto de esquema, debes proporcionar un name
para el objeto que debe ser único entre todos los demás objetos del esquema. Por lo general, usarás un valor name
que describa al objeto, como movie
para un objeto de película. El servicio de esquema usa el campo name
como un identificador de clave para objetos indexables. Para obtener más información sobre el campo name
, consulta la Definición del objeto.
Define las propiedades de los objetos
Como se especifica en la referencia de ObjectDefinition, al nombre del objeto le sigue un conjunto de options
y una lista de propertyDefinitions
.
options
también puede constar de freshnessOptions
y displayOptions
.
Los freshnessOptions
se usan para ajustar la clasificación de búsqueda en función de la antigüedad de un elemento. Los displayOptions
se usan para definir si se muestran etiquetas y propiedades específicas en los resultados de la búsqueda de un objeto.
En la sección propertyDefinitions
, debes definir las propiedades de los objetos, como el título de la película o la fecha de estreno.
En el siguiente fragmento, se muestra el objeto movie
con dos propiedades: movieTitle
y 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"
}
...
]
}
]
}
PropertyDefinition consta de los siguientes elementos:
- Una cadena
name
- Una lista de opciones independientes del tipo, como
isReturnable
en el fragmento anterior - Un tipo y sus opciones específicas asociadas, como
textPropertyOptions
yretrievalImportance
en el fragmento anterior - Un
operatorOptions
que describe la forma en que se usa la propiedad como un operador de búsqueda - Uno o más
displayOptions
, comodisplayLabel
en el fragmento anterior
El name
de una propiedad debe ser único dentro del objeto que lo contiene, pero se puede usar el mismo nombre en otros objetos y subobjetos.
En la Figura 1, el título de la película y la fecha de estreno se definieron dos veces: una vez en el objeto movie
y otra vez en el subobjeto filmography
del objeto person
. En este esquema, se vuelve a usar el campo movieTitle
para poder admitir dos tipos de comportamientos de búsqueda:
- Mostrar los resultados de la película cuando los usuarios buscan el título de una película
- Mostrar los resultados de las personas cuando los usuarios buscan el título de una película en la que participó un actor
De manera similar, el esquema vuelve a usar el campo releaseDate
porque tiene el mismo significado para los dos campos movieTitle
.
Cuando desarrolles tu propio esquema, ten en cuenta de qué manera tu repositorio podría tener campos relacionados que contengan datos que deseas declarar más de una vez en tu esquema.
Agrega opciones independientes del tipo
PropertyDefinition enumera opciones generales de funcionalidad de búsqueda que todas las propiedades tienen en común sin importar el tipo de datos.
isReturnable
: Indica si la propiedad identifica datos que se deben mostrar en los resultados de la búsqueda mediante la API de consulta. Todas las propiedades de las películas de ejemplo se pueden devolver. Es posible usar las propiedades que no se pueden mostrar para buscar o clasificar resultados sin que se muestren al usuario.isRepeatable
: Indica si se permiten valores múltiples para la propiedad. Por ejemplo, una película tiene solo una fecha de estreno, pero puede tener varios actores.isSortable
: Indica que la propiedad se puede usar para el ordenamiento. Esto no sucede con las propiedades repetibles. Por ejemplo, los resultados de la película se pueden ordenar por fecha de estreno o índice de audiencia.isFacetable
: Indica que la propiedad se puede usar para generar facetas. Una faceta se usa para definir mejor los resultados de la búsqueda, mediante los cuales el usuario puede ver los resultados iniciales y, luego, agregar criterios o facetas para definir mejor esos resultados. Esta opción no se puede usar con propiedades cuyo tipo es un objeto.isReturnable
debe ser verdadera para establecer esta opción. Solo se admite esta opción para las propiedades booleanas, de enumeración y de texto. Por ejemplo, en nuestro esquema de muestra, podríamos hacer quegenre
,actorName
,userRating
ympaaRating
se puedan filtrar para permitir que se usen en el perfeccionamiento interactivo de los resultados de la búsqueda.isWildcardSearchable
indica que los usuarios pueden realizar búsquedas con comodines para esta propiedad. Esta opción solo está disponible en las propiedades de texto. El funcionamiento de la búsqueda con comodines en el campo de texto depende del valor establecido en el campo exactMatchWithOperator. SiexactMatchWithOperator
se establece entrue
, el valor de texto se segmenta como un valor atómico y se realiza una búsqueda de comodín en él. Por ejemplo, si el valor de texto esscience-fiction
, una consulta de comodínscience-*
coincide con él. SiexactMatchWithOperator
se establece enfalse
, el valor de texto se segmenta y se realiza una búsqueda de comodín en cada token. Por ejemplo, si el valor de texto es "ciencia ficción", las consultas con comodínsci*
ofi*
coinciden con el elemento, peroscience-*
no.
Estos parámetros de funcionalidad de búsqueda generales son todos valores booleanos; tienen un valor predeterminado de false
y se deben configurar como true
para usarlos.
En la siguiente tabla, se muestran los parámetros booleanos establecidos como true
para todas las propiedades del objeto movie
:
Propiedad | 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 | verdadero |
genre
y actorName
tienen isRepeatable
establecido como true
porque una película puede pertenecer a más de un género y suele tener más de un actor. Una propiedad no se puede ordenar si es repetible o se encuentra dentro de un subobjeto repetible.
Define el tipo
En la sección de referencia de PropertyDefinition, se enumeran varias xxPropertyOptions
en las que xx
es un tipo específico, como boolean
. Para establecer el tipo de datos de la propiedad, debes definir el objeto de tipo de datos apropiado. Si se define un objeto de tipo de datos para una propiedad, se establece el tipo de datos de esa propiedad. Por ejemplo, definir textPropertyOptions
para la propiedad movieTitle
indica que el título de la película es de tipo texto. En el siguiente fragmento, se muestra la propiedad movieTitle
en la que textPropertyOptions
establece el tipo de datos.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
...
},
...
},
Una propiedad puede tener solo un tipo de datos asociado. Por ejemplo, en nuestro esquema de película, releaseDate
solo puede ser una fecha (p.ej., 2016-01-13
) o una cadena (p.ej., January 13, 2016
), pero no ambos.
A continuación, se muestran los objetos de tipo de datos usados con el fin de especificar los tipos de datos para las propiedades en el esquema de película de ejemplo:
Propiedad | Objeto de tipo de datos |
---|---|
movieTitle |
textPropertyOptions |
releaseDate |
datePropertyOptions |
genre |
enumPropertyOptions |
duration |
textPropertyOptions |
actorName |
textPropertyOptions |
userRating |
integerPropertyOptions |
mpaaRating |
textPropertyOptions |
El tipo de datos que elijas para la propiedad dependerá de los casos prácticos que esperes.
En la situación imaginaria de este esquema de película, se espera que los usuarios deseen ordenar los resultados de forma cronológica, por lo que releaseDate
es un objeto de fecha.
Por ejemplo, si se esperaba un caso práctico de la comparación de los estrenos de diciembre con los estrenos de enero a lo largo de los años, un formato de string puede ser útil.
Configura opciones específicas de los tipos
La sección de referencia de PropertyDefinition proporciona vínculos a opciones para cada tipo. La mayoría de las opciones específicas de los tipos no son obligatorias, excepto la lista de possibleValues
en enumPropertyOptions
. Además, la opción orderedRanking
te permite clasificar valores relacionados entre sí. En el siguiente fragmento, se muestra la propiedad movieTitle
con textPropertyOptions
que establece el tipo de datos y con la opción específica del tipo retrievalImportance
.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
...
},
...
}
A continuación, se muestran opciones adicionales específicas de los tipos que se usan en el esquema de ejemplo:
Propiedad | Tipo | Opciones específicas de los tipos |
---|---|---|
movieTitle |
textPropertyOptions |
retrievalImportance |
releaseDate |
datePropertyOptions |
|
genre |
enumPropertyOptions |
|
duration |
textPropertyOptions |
|
actorName |
textPropertyOptions |
|
userRating |
integerPropertyOptions |
orderedRanking , maximumValue |
mpaaRating |
textPropertyOptions |
Define opciones de operador
Además de las opciones específicas de los tipos, cada tipo tiene un conjunto de operatorOptions
opcionales. Estas opciones describen cómo se usa la propiedad como un operador de búsqueda. En el siguiente fragmento, se muestra la propiedad movieTitle
con textPropertyOptions
que establece el tipo de datos y con las opciones específicas de los tipos retrievalImportance
y operatorOptions
.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "title"
}
},
...
}
Cada operatorOptions
tiene un operatorName
, como title
para un movieTitle
. El nombre del operador es el operador de búsqueda de la propiedad. Un operador de búsqueda es el parámetro real que esperas que empleen los usuarios cuando limitan una búsqueda. Por ejemplo, para buscar películas según su título, el usuario debe escribir title:movieName
, donde movieName
es el nombre de una película.
No es necesario que los nombres de los operadores sean iguales al nombre de la propiedad. En cambio, debes usar nombres de operadores que reflejen las palabras más comunes que usan los usuarios en tu organización. Por ejemplo, si los usuarios prefieren el término “nombre” en lugar de “título” para el título de una película, entonces el nombre del operador se debe configurar como “nombre”.
Puedes usar el mismo nombre de operador para varias propiedades solo si todas las propiedades se resuelven en el mismo tipo. Cuando se usa un nombre de operador compartido en una consulta, se recuperan todas las propiedades que usan ese nombre. Por ejemplo, supongamos que el objeto de película tiene propiedades plotSummary
y plotSynopsis
, y cada una de ellas tiene un operatorName
de plot
. Una consulta única que usa el operador de búsqueda plot
recupera las dos propiedades solo si son texto (textPropertyOptions
).
Además de operatorName
, las propiedades ordenables pueden tener campos lessThanOperatorName
y greaterThanOperatorName
en operatorOptions
.
Los usuarios pueden emplear estas opciones para crear consultas en función de comparaciones con un valor enviado.
Por último, textOperatorOptions
tiene un campo exactMatchWithOperator
en operatorOptions
. Si estableces exactMatchWithOperator
en true
, la cadena de consulta debe coincidir con todo el valor de la propiedad, no se debe encontrar solo dentro del texto.
El valor del texto se debe tratar como un valor atómico en las búsquedas de operadores y en las coincidencias de facetas.
Por ejemplo, puedes indexar los objetos libro o película con propiedades de género.
Los géneros podrían incluir “ciencia ficción”, “ciencia” y “ficción”. Si exactMatchWithOperator
se establece en false
o se omite, la búsqueda de un género o la selección de la faceta “Ciencia” o “Ficción” también mostrará resultados para “Ciencia ficción”, ya que el texto se segmenta en tokens y los tokens “Ciencia” y “Ficción” existen en “Ciencia ficción”.
Cuando exactMatchWithOperator
es true
, el texto se trata como un token único, por lo que “ciencia” y “ficción” no coinciden con “ciencia ficción”.
Agrega la sección displayOptions
(opcional)
Hay una sección displayOptions
opcional al final de cualquier sección propertyDefinition
. Esta sección contiene una cadena displayLabel
.
displayLabel
es una etiqueta de texto recomendada y fácil de usar para la propiedad. Si la propiedad está configurada para la visualización con ObjectDisplayOptions, esta etiqueta se muestra delante de la propiedad. Si la propiedad está configurada para la visualización y displayLabel
no está definida, solo se muestra el valor de la propiedad.
En el siguiente fragmento, se muestra la propiedad movieTitle
con un displayLabel
establecido como “Title”.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "title"
}
},
"displayOptions": {
"displayLabel": "Title"
}
},
A continuación, se muestran los valores displayLabel
para todas las propiedades del objeto movie
en el esquema de ejemplo:
Propiedad | displayLabel |
---|---|
movieTitle |
Title |
releaseDate |
Release date |
genre |
Genre |
duration |
Run length |
actorName |
Actor |
userRating |
Audience score |
mpaaRating |
MPAA rating |
Agrega la sección suggestionFilteringOperators[]
(opcional)
Hay una sección opcional de suggestionFilteringOperators[]
al final de cualquier sección propertyDefinition
. Usa esta sección para definir una propiedad que se usa para filtrar las sugerencias de autocompletar. Por ejemplo, puedes definir el operador de genre
para filtrar las sugerencias según el género de película preferido del usuario. Luego, cuando el usuario escribe su búsqueda, solo se muestran aquellas películas que coinciden con su género preferido como parte de las sugerencias de autocompletar.
Registra el esquema
Para que los datos estructurados se muestren en las consultas de Cloud Search, debes registrar tu esquema con el servicio de esquemas de este producto. Para registrar un esquema se necesita el ID de la fuente de datos que obtuviste durante el paso Inicializar una fuente de datos.
Con el ID de la fuente de datos, genera una solicitud de UpdateSchema para registrar tu esquema.
Como se detalla en la página de referencia UpdateSchema, genera la siguiente solicitud HTTP para registrar tu esquema:
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
El cuerpo de tu solicitud debe contener lo siguiente:
{ "validateOnly": // true or false, "schema": { // ... Your complete schema object ... } }
Usa la opción validateOnly
para probar la validez de tu esquema sin registrarlo realmente.
Indexa los datos
Una vez que tu esquema esté registrado, propaga la fuente de datos mediante llamadas al Índice. Por lo general, la indexación se realiza dentro de tu conector de contenido.
Con el esquema de película, una solicitud de indexación a la API de REST para una sola película se vería de la siguiente manera:
{
"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"
}
Observa cómo el valor de movie
en el campo objectType
coincide con el nombre de la definición de objeto en el esquema. Mediante la coincidencia de estos dos valores, Cloud Search sabe qué objeto de esquema usar durante la indexación.
También observa cómo la indexación de la propiedad de esquema releaseDate
usa subpropiedades de year
, month
y day
que hereda porque se define como un tipo de datos date
mediante el uso de datePropertyOptions
para definirlo.
Sin embargo, debido a que year
, month
y day
no están definidos en el esquema, no puedes consultar en una de esas propiedades (p.ej., year
) de forma individual.
También observa cómo la propiedad repetible actorName
se indexa mediante una lista de valores.
Identifica problemas potenciales de indexación
Los dos problemas más comunes relacionados con los esquemas y la indexación son los siguientes:
Tu solicitud de indexación contiene un objeto de esquema o un nombre de propiedad que no se registró con el servicio de esquema. Este problema hace que la propiedad o el objeto se ignoren.
Tu solicitud de indexación tiene una propiedad con un valor de tipo diferente al tipo registrado en el esquema. Este problema hace que Cloud Search muestre un error en el momento de la indexación.
Prueba el esquema con varios tipos de consultas
Antes de registrar tu esquema en un repositorio de datos de producción de gran tamaño, considera probarlo en un repositorio de datos de prueba más pequeño. Esto te permite configurar rápidamente el esquema y borrar los datos indexados, sin afectar un índice más grande o uno de producción existente. Para un repositorio de datos de prueba, crea un LCA que solo autorice un usuario de prueba a fin de que otros usuarios no vean estos datos en los resultados de la búsqueda.
Si quieres crear una interfaz de búsqueda para validar las búsquedas, consulta La interfaz de búsqueda.
Esta sección contiene varias consultas de ejemplo diferentes que puedes usar para probar un esquema de película.
Prueba con una consulta genérica
Una consulta genérica muestra todos los elementos de la fuente de datos que contienen una string específica. Con una interfaz de búsqueda, puedes ejecutar una consulta genérica en una fuente de datos de películas. Por ejemplo, si escribes la palabra “titanic” y presionas Intro, se deben mostrar todas las películas con la palabra “titanic” en los resultados de la búsqueda.
Prueba con un operador
Agregar un operador a una consulta limita los resultados a los elementos que coinciden con ese valor de operador. Por ejemplo, es posible que desees usar el operador actor
para buscar todas las películas protagonizadas por un actor específico. En una interfaz de búsqueda, puedes realizar esta consulta con operador escribiendo un par operador=valor, como “actor:Zane” y presionando Intro. en los resultados de la búsqueda se deben mostrar todas las películas en las que actúe Zane.
Ajusta el esquema
Después de comenzar a usar tu esquema y tus datos, supervisa si hay algo que no funciona para tus usuarios. Deberías configurar tu esquema para las siguientes situaciones:
- Indexar un campo que no se indexó con anterioridad. Por ejemplo, los usuarios pueden buscar varias veces películas según el nombre del director, por ello, podrías configurar tu esquema para que admita el nombre del director como un operador.
- Cambiar los nombres de los operadores de búsqueda en función de los comentarios de los usuarios. Los nombres de los operadores deben ser fáciles de usar. Si tus usuarios “recuerdan” con frecuencia el nombre de operador incorrecto, tal vez deberías cambiarlo.
Vuelve a indexar después de un cambio de esquema
Para cambiar algunos valores en tu esquema, no es necesario que vuelvas a indexar tus datos. Puedes enviar una solicitud nueva de UpdateSchema y tu índice seguirá en funcionamiento.
- Nombres de operadores
- Valores mínimos y máximos de números enteros
- Clasificación ordenada de números enteros y enumeraciones
- Opciones de actualización
- Opciones de visualización
Para los siguientes cambios, los datos indexados con anterioridad continuarán en funcionamiento de acuerdo con el esquema registrado previamente. Sin embargo, debes volver a indexar las entradas existentes para ver los cambios en función del esquema actualizado si el esquema tiene los siguientes cambios:
- Adición o eliminación de una propiedad o un objeto nuevos
- Cambiar
isReturnable
,isFacetable
oisSortable
defalse
atrue
Debes configurar isFacetable
o isSortable
para que sea true
solo si lo necesitas y tienes un caso de uso claro.
Por último, cuando marcas una propiedad isSuggestable
para actualizar tu esquema, debes volver a indexar tus datos, lo que provoca una demora en el uso del autocompletado para esa propiedad.
Cambios de propiedad no permitidos
Algunos cambios de esquema no están permitidos, incluso si vuelves a indexar tus datos, porque afectarán al índice o producirán resultados de la búsqueda deficientes o incoherentes. Esto incluye cambios en lo siguiente:
- El tipo de datos de la propiedad
- El nombre de la propiedad
- Configuración de
exactMatchWithOperator
. - Configuración de
retrievalImportance
.
Sin embargo, hay una manera de evitar esta limitación.
Realiza un cambio de esquema complejo
Para evitar cambios que generen resultados de la búsqueda deficientes o afecten al índice de la búsqueda, Cloud Search impide ciertos tipos de cambios en solicitudes de UpdateSchema una vez indexado el repositorio. Por ejemplo, el tipo de datos o el nombre de una propiedad no se pueden cambiar luego de establecerse. Estos cambios no se pueden realizar a través de una solicitud de UpdateSchema simple, incluso si vuelves a indexar tus datos.
En situaciones en las que debes realizar un cambio que de otra forma no estaría permitido, por lo general, puedes hacer una serie de cambios permitidos que generen el mismo efecto. En general, esto implica la migración de propiedades indexadas de una definición de objeto más antigua a una más nueva y, luego, el envío de una solicitud de indexación que use solo la propiedad más nueva.
En los siguientes pasos, se muestra cómo cambiar el tipo de datos o el nombre de una propiedad:
- Agrega una propiedad nueva a la definición de objeto en tu esquema. Usa un nombre diferente de la propiedad que deseas cambiar.
- Genera la solicitud de UpdateSchema con la definición nueva. Recuerda enviar el esquema completo en la solicitud, incluidas la propiedad nueva y la antigua.
Reabastece el índice desde el repositorio de datos. Para hacerlo, envía todas las solicitudes de indexación con la propiedad nueva, pero no con la antigua, ya que se contarían dos veces las coincidencias de las consultas.
- Durante el reabastecimiento de indexación, busca la propiedad nueva y usa la propiedad antigua como la configuración predeterminada para evitar comportamientos incoherentes.
- Después de que se complete el reabastecimiento, ejecuta consultas de prueba para verificar.
Borra la propiedad antigua. Genera otra solicitud de UpdateSchema sin el nombre de la propiedad antigua y deja de usar ese nombre en las solicitudes de indexación futuras.
Migra cualquier uso de la propiedad antigua a la propiedad nueva. Por ejemplo, si cambias el nombre de la propiedad de creador a autor, debes actualizar tu código de consulta para usar autor en la parte que antes hacía referencia a creador.
Cloud Search mantiene un registro de los objetos o propiedades borrados durante 30 días para proteger contra cualquier reutilización que pueda causar resultados de indexación inesperados. Durante esos 30 días, debes dejar de usar los objetos o propiedades borrados además de omitirlos en las solicitudes de indexación futuras. Esto garantiza que si más tarde decides volver a instalar esos objetos o propiedades, lo puedes hacer de una forma que mantenga la precisión de tu índice.
Conoce las limitaciones de tamaño
Cloud Search impone límites en el tamaño de los esquemas y los objetos de datos estructurados. Los límites son los siguientes:
- El número máximo de objetos de nivel superior es de 10 objetos.
- La profundidad máxima de una jerarquía de datos estructurados es de 10 niveles.
- La cantidad total de campos en un objeto está limitada a 1,000, lo que incluye la cantidad de campos básicos y la suma de la cantidad de campos en cada objeto anidado.
Próximos pasos
Aquí hay algunos pasos que puedes seguir:
Crea una interfaz de búsqueda para probar tu esquema.
Ajusta tu esquema para mejorar la calidad de la búsqueda.
Diseña la estructura de un esquema para optimizar la interpretación de consultas.
Aprende a aprovechar el esquema
_dictionaryEntry
para definir sinónimos para los términos que se suelen usar en tu empresa. Para usar el esquema_dictionaryEntry
, consulta Define sinónimos.Crea un conector.