Un esquema de Google Cloud Search es una estructura JSON que define objetos, propiedades y opciones para indexar y consultar datos. Tu conector de contenido usa el esquema registrado para estructurar y indexar los datos del repositorio.
Para crear un esquema, debes proporcionar un objeto de esquema JSON a la API. Debes registrar un esquema para cada repositorio antes de indexar los datos.
En este documento, se incluyen los conceptos básicos de la creación de esquemas. Para optimizar la experiencia de búsqueda, consulta Mejora la calidad de búsqueda.
Crea un esquema
Sigue estos pasos para crear tu esquema de Cloud Search:
- Identifica el comportamiento esperado del usuario.
- Inicializa una fuente de datos.
- Define tus objetos.
- Define las propiedades de los objetos.
- Registra el esquema.
- Indexa los datos.
- Prueba el esquema.
- Ajusta el esquema.
Identifica el comportamiento esperado del usuario
Prever cómo buscan los usuarios ayuda a definir tu estrategia de esquema. En una base de datos de películas, los usuarios pueden buscar "películas protagonizadas por Robert Redford". Tu esquema debe admitir consultas de películas con un actor específico.
Para alinear tu esquema con el comportamiento del usuario, haz lo siguiente:
- Evalúa diversas consultas de diferentes usuarios.
- Identifica conjuntos de datos lógicos o objetos, como una "película".
- Identifica propiedades (atributos) como el título o la fecha de lanzamiento.
- Identifica valores válidos para las propiedades, como "En busca del arca perdida".
- Determina las necesidades de ordenamiento y clasificación, como el orden cronológico o las calificaciones del público.
- Identifica las propiedades de contexto, como el rol laboral, para mejorar las sugerencias de autocompletar.
- Haz una lista de estos objetos, propiedades y valores de ejemplo. Usa esta lista para definir las opciones de operador.
Inicializa tu fuente de datos
Una fuente de datos representa los datos indexados del repositorio almacenados en Google Cloud. Consulta Administra fuentes de datos de terceros. Cuando un usuario hace clic en un resultado, Cloud Search lo dirige al elemento con la URL de la solicitud de indexación.
Define tus objetos
El objeto es la unidad fundamental de un esquema. Las estructuras lógicas como "película" o "persona" son objetos. Cada objeto tiene propiedades como título, duración o nombre.
Un esquema es una lista de
definiciones de objetos en la etiqueta objectDefinitions.
{
"objectDefinitions": [
{ "name": "movie" },
{ "name": "person" }
]
}
Usa nombres únicos para cada objeto, como movie. El servicio de esquema usa estos nombres como claves. Consulta
ObjectDefinition.
Define las propiedades de los objetos
Define propiedades, como el título y la fecha de lanzamiento, en la sección propertyDefinitions. Usa
options
para
freshnessOptions
(clasificación) y
displayOptions
(etiquetas de la IU).
{
"objectDefinitions": [{
"name": "movie",
"propertyDefinitions": [
{
"name": "movieTitle",
"isReturnable": 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"
}
}
}
]
}]
}
PropertyDefinition incluye lo siguiente:
- Una cadena
name - Opciones independientes del tipo (p. ej.,
isReturnable) - Un tipo y opciones específicas del tipo (p. ej.,
textPropertyOptions) operatorOptionspara operadores de búsquedadisplayOptionspara etiquetas de la IU
Puedes reutilizar los nombres de las propiedades en diferentes objetos. Por ejemplo, movieTitle
puede aparecer en un objeto movie y en la filmografía de un objeto person.
Agrega opciones independientes del tipo
PropertyDefinition
incluye opciones booleanas para configurar la funcionalidad de búsqueda de una propiedad,
independientemente de su tipo. De forma predeterminada, estas opciones se establecen en false y deben configurarse como true para usarse.
isReturnable: Se establece entruesi los datos de la propiedad deben mostrarse en los resultados de la búsqueda con la API de consulta. Las propiedades que no se pueden mostrar se pueden usar para buscar o clasificar sin que aparezcan en los resultados.isRepeatable: Se establece entruesi la propiedad puede tener varios valores. Por ejemplo, una película tiene una fecha de lanzamiento, pero varios actores.isSortable: Se establece entruesi la propiedad se puede usar para el ordenamiento. No puede sertruesiisRepeatableestrueo si la propiedad está dentro de un subobjeto repetible.isFacetable: Se establece entruesi la propiedad se puede usar para generar facetas (atributos que se usan para refinar los resultados de la búsqueda).- Requiere que
isReturnableseatrue. - Solo se admite para las propiedades booleanas, de enumeración y de texto.
- Requiere que
isWildcardSearchable: Se establece entruepara permitir que los usuarios realicen búsquedas con comodines en esta propiedad. Esta opción solo está disponible en las propiedades de texto y su comportamiento depende de la configuración deexactMatchWithOperator:- Si
exactMatchWithOperatorestrue, el valor de texto se trata como un solo token. Una consulta comoscience-*coincide con el valorscience-fiction. - Si
exactMatchWithOperatoresfalse, el valor de texto se tokeniza. Una consulta comosci*ofi*coincide conscience-fiction, peroscience-*no.
- Si
Define el tipo
Para establecer el tipo de datos, define el objeto de opciones de propiedad adecuado (p.ej., textPropertyOptions). Usa enums (enumPropertyOptions) si conoces todos los valores posibles. Una propiedad puede tener solo un tipo de datos.
Define opciones de operador
operatorOptions describe cómo funciona una propiedad como un operador de búsqueda.
Cada operatorOptions necesita un operatorName (p.ej., title). Este es el
parámetro que los usuarios escriben en las consultas (p.ej., title:titanic). Usa nombres intuitivos
y muéstralos a los usuarios.
Puedes compartir un operatorName en las propiedades del mismo tipo. Las consultas que usan ese nombre recuperan resultados de todas las propiedades coincidentes.
Las propiedades ordenables pueden incluir lessThanOperatorName y greaterThanOperatorName para las consultas de comparación. Las propiedades de texto pueden usar exactMatchWithOperator para tratar todo el valor como un solo token.
Agrega opciones de visualización
La sección opcional displayOptions contiene una displayLabel. Esta es una etiqueta fácil de usar que se muestra en los resultados de la búsqueda.
Agrega operadores de filtrado de sugerencias
Usa suggestionFilteringOperators[] para definir una propiedad que filtre las sugerencias de autocompletar (p.ej., filtrar sugerencias de películas según el género preferido de un usuario). Solo puedes definir un filtro de sugerencias.
Registra el esquema
Registra tu esquema con el servicio de esquema usando el ID de tu fuente de datos. Genera una UpdateSchema:
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
Usa validateOnly: true para probar tu esquema sin registrarlo.
Indexa los datos
Después del registro, propaga la fuente de datos con llamadas al índice , por lo general, con un conector.
Ejemplo de solicitud de indexación:
{
"name": "datasource/<data_source_id>/items/titanic",
"metadata": {
"title": "Titanic",
"objectType": "movie"
},
"structuredData": {
"object": {
"properties": [{
"name": "movieTitle",
"textValues": { "values": ["Titanic"] }
}]
}
},
"itemType": "CONTENT_ITEM"
}
Prueba el esquema.
Realiza pruebas con un repositorio pequeño antes de la producción. Crea una ACL que limite los resultados a un usuario de prueba.
- Búsqueda genérica: Busca una cadena (p.ej., "titanic") para ver todos los elementos coincidentes.
- Consulta de operador: Usa un operador (p.ej.,
actor:Zane) para limitar los resultados.
Ajusta el esquema
Supervisa los comentarios de los usuarios y ajusta tu esquema. Puedes indexar campos nuevos o cambiar el nombre de los operadores para que sean más intuitivos.
Vuelve a indexar después de un cambio de esquema
No es necesario que vuelvas a indexar para los cambios en lo siguiente:
- Nombres de operadores
- Límites numéricos
- Clasificación ordenada
- Opciones de actualización o visualización
Debes volver a indexar para lo siguiente:
- Agregar o quitar propiedades u objetos
- Cambiar
isReturnable,isFacetableoisSortableatrue - Marcar una propiedad
isSuggestable
Cambios de propiedad no permitidos
No se permiten los cambios que interrumpen el índice o causan resultados incoherentes, incluidos los siguientes:
- Tipo de datos o nombre de la propiedad
- Configuración de
exactMatchWithOperatororetrievalImportance
Realiza un cambio de esquema complejo
Para realizar un cambio no permitido, migra las propiedades de una definición anterior a una nueva:
- Agrega una propiedad nueva con un nombre diferente al esquema.
- Registra el esquema con las propiedades nuevas y anteriores.
- Rellena el índice usando solo la propiedad nueva.
- Borra la propiedad anterior del esquema.
- Actualiza el código de la consulta para usar el nuevo nombre de la propiedad.
Cloud Search registra los elementos borrados durante 30 días para evitar problemas de reutilización.
Limitaciones de tamaño
- Un máximo de 10 objetos de nivel superior
- Una profundidad máxima de 10 niveles
- Un máximo de 1,000 campos por objeto (incluidos los campos anidados)
Próximos pasos
- Crea una interfaz de búsqueda.
- Mejora la calidad de búsqueda.
- Diseña la estructura de un esquema para optimizar la interpretación de consultas.
- Define sinónimos.