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 de los usuarios
- Inicializa una fuente de datos
- Crea un esquema
- Esquema de muestra completo
- Registra tu esquema.
- Indexa tus datos
- Prueba tu esquema
- Ajusta tu 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 una propiedad el contexto en el que se pueden ejecutar las búsquedas, como las búsquedas puesto o departamento, para que se puedan proporcionar sugerencias de autocompletar según el adicional. Por ejemplo, para las personas que buscan una base de datos de películas, los usuarios podrían solo le interesan un determinado género de películas. Los usuarios definirían qué género que desean que devuelvan sus búsquedas, posiblemente como parte de su usuario perfil. Luego, cuando un usuario comienza a escribir una consulta sobre películas, solo películas de su género preferido, como "películas de acción", se sugieren como es parte de las sugerencias de autocompletar.
- Hacer una lista de estos objetos, propiedades y valores de ejemplo que se pueden usar en las búsquedas (Para obtener detalles sobre cómo se usa esta lista, consulta la sección Definir 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, consultar 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, uno la estructura lógica de los datos es "película". Otro objeto podría ser "persona". a representar al elenco y al equipo involucrados en 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.
![Dibujo de conexiones de esquema entre entidades](https://developers.google.cn/static/cloud-search/images/schemaExample.png?authuser=5&hl=es)
Un esquema de Cloud Search es
esencialmente una lista de declaraciones de definición de objeto definidas dentro del
Etiqueta objectDefinitions
. En el siguiente fragmento de esquema, se muestra
Las sentencias objectDefinitions
para los objetos de esquema persona y película
{
"objectDefinitions": [
{
"name": "movie",
...
},
{
"name": "person",
...
}
]
}
Cuando defines un objeto de esquema, proporcionas un name
para el objeto que debe
ser únicos entre todos los demás objetos del esquema. Por lo general, usarás un name
valor que describe el objeto, como movie
para un objeto de película. El esquema
usa el campo name
como identificador de clave para objetos indexables. Para
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 para
ObjectDefinition,
al nombre del objeto le sigue un conjunto
options
,
y una lista de
propertyDefinitions
.
El
options
puede
constan de
freshnessOptions
y
displayOptions
El
freshnessOptions
se usan para ajustar la clasificación de búsqueda según la actualidad de un artículo. El
displayOptions
se usan para definir si etiquetas y propiedades específicas se muestran en
los resultados de la búsqueda de un objeto.
El
propertyDefinitions
es donde defines las propiedades de un objeto, como el título de la película.
y la fecha de lanzamiento.
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 la versión anterior . - Un tipo y sus opciones específicas de tipo asociadas
como
textPropertyOptions
yretrievalImportance
en el fragmento anterior. - Un elemento
operatorOptions
que describe cómo se usa la propiedad como 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
Objeto person
. En este esquema, se reutiliza el campo movieTitle
para que el esquema pueda 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 reutiliza 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 deben en los resultados de la búsqueda a través de la API de consulta. Todas las películas de ejemplo estas propiedades se pueden mostrar. 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 múltiples valores 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 yisReturnable
debe ser verdadero para configurar 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, podemos hacergenre
,actorName
,userRating
ympaaRating
en la faceta para permitirles usarse para definir mejor los resultados de la búsqueda de manera interactiva.isWildcardSearchable
indica que los usuarios pueden realizar una búsqueda mediante caracteres comodín esta propiedad. Esta opción solo está disponible en propiedades de texto. Cómo usar el comodín los resultados de búsqueda en el campo de texto dependen del valor establecido en el exactMatchWithOperator. SiexactMatchWithOperator
se establece comotrue
, el valor de texto se tokenizó como un valor atómico y se realizar contra él. Por ejemplo, si el valor de texto esscience-fiction
, una consulta comodínscience-*
coincide con ella. Si establecesexactMatchWithOperator
comofalse
, se asigna un token al valor de texto y se realiza una búsqueda mediante caracteres comodín cada token. Por ejemplo, si el valor de texto es "ciencia ficción", el comodín consultasci*
ofi*
coincide con el elemento, peroscience-*
no lo hace.
Estos parámetros generales de funcionalidad de búsqueda son todos valores booleanos. no
todas tienen un valor predeterminado de false
y deben configurarse como true
que se usará.
En la siguiente tabla, se muestran los parámetros booleanos establecidos en 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 |
Tanto genre
como actorName
tienen isRepeatable
establecido en true
porque una película puede pertenecer a más de un género y suele tener
a 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
El
PropertyDefinition
En la sección de referencia, 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 la película
title es de tipo texto. En el siguiente fragmento, se muestra la propiedad movieTitle
y 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 nuestra película
esquema, 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
para 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. Más específicos de los tipos
las opciones son opcionales, excepto la lista de possibleValues
en el
enumPropertyOptions
Además, la opción orderedRanking
te permite hacer lo siguiente:
clasificar valores relacionados entre sí. El
El siguiente fragmento muestra la propiedad movieTitle
con textPropertyOptions
configurando el tipo de datos y con la opción retrievalImportance
específica del tipo.
{
"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
Estas opciones describen cómo se usa la propiedad como
de búsqueda. En el siguiente fragmento, se muestra la propiedad movieTitle
con
textPropertyOptions
, que establece el tipo de datos
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 una
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 por su título, el
el usuario escribiría 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 "movie" tiene plotSummary
y plotSynopsis
y cada una de ellas tenía un operatorName
de plot
. Como
siempre que ambas propiedades sean texto (textPropertyOptions
), una sola
La consulta con el operador de búsqueda plot
recupera ambos.
Además de operatorName
, las propiedades que se pueden ordenar 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
establece exactMatchWithOperator
en true
, la cadena de consulta debe
coinciden con todo el valor de la propiedad, no solo deben encontrarse en el 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”. Con
exactMatchWithOperator
establecido en false
u omitido,
buscando un género o
seleccionando el cuadro "Ciencia" o "Ficción" facet también
mostrar resultados de "ciencia ficción" ya que se asignan tokens al texto y
“Ciencia” y "Ficción" los tokens existen en “ciencia ficción”.
Cuando exactMatchWithOperator
sea true
,
el texto se trata como un token único, por lo que
“Ciencia” ni "Ficción" coincide con "ciencia ficción".
Agrega la sección displayOptions
(opcional)
Hay una sección opcional displayOptions
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 se configuró
para Display y no se definió displayLabel
, solo se especifica el valor de la propiedad
que se muestra.
En el siguiente fragmento, se muestra la propiedad movieTitle
con una displayLabel
.
establecido en "Título".
{
"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 de movie
.
objeto en el esquema de muestra:
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)
También hay una
suggestionFilteringOperators[]
al final de cualquier sección propertyDefinition
. Usa esta sección para
definir una propiedad que se usa para filtrar sugerencias de autocompletar Por ejemplo,
podría definir el operador de genre
para filtrar sugerencias según la configuración
género de película que prefieras. Luego, cuando el usuario escribe su consulta de búsqueda, solo las
las películas que coinciden con su género preferido se muestran como parte del autocompletado
sugerencias.
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
realmente lo registra.
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 objeto.
nombre de la definición en el esquema. Mediante la coincidencia de estos dos valores, Cloud Search sabe qué objeto de esquema usar durante la indexación.
Además, observa cómo la indexación de la propiedad de esquema releaseDate
usa
subpropiedades de year
, month
y day
que hereda porque es
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, puedes
No puedes realizar consultas en una de esas propiedades (p.ej., year
) de forma individual.
Y 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 quieras usar el operador actor
para encontrar
todas las películas protagonizadas por un actor específico. Con una interfaz de búsqueda, puedes realizar
esta consulta con operador con solo escribir un par operador=valor, como
"actor:Zane" y presiona "actor:Zane". 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 alguno de los siguientes valores en tu esquema, no es necesario que lo hagas. volver a indexar tus datos. Simplemente puedes enviar un nuevo UpdateSchema solicitud, y tu índice seguirá funcionando:
- 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 tienes una
un caso de uso y una necesidad claros.
Por último, cuando marques una propiedad isSuggestable
para actualizar tu esquema,
debes volver a indexar tus datos, lo que provoca un retraso en el uso del autocompletado de
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
- Parámetro de configuración de
exactMatchWithOperator
. - Parámetro de 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 puede lograr con un método UpdateSchema 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 la Esquema
_dictionaryEntry
para definir sinónimos de los términos que se usan comúnmente en su empresa. Para usar_dictionaryEntry
consulta, consulta Define sinónimos.Crea un conector.