globalSearch
Búsqueda pública a través de títulos y valores de atributos de registros visibles.
Descripción
Este método busca nombres y valores de atributos de registros a través de tipos de entidad. Devuelve una Promesa que se resuelve en un objeto IGlobalSearchResponse: la consulta para la que se ejecutó, además de los registros encontrados agrupados por tipo de entidad, cada elemento llevando el contexto de cómo coincidió.
.globalSearch(
,
,
,
,
,
);
Esquema de parámetros
Esquema
query(requerido): string
Consulta de búsqueda
ejemplo: "invierno"
types: TGlobalSearchEntityType[]
Tipos de entidad en los que buscar, enviados separados por comas. Busca en todos los tipos cuando se omite
visibility: 'todos' | 'visibles' | 'ocultos'
Filtro de visibilidad de los registros buscados. Predeterminado: "todos"
ejemplo: "todos"
offset: number
Desplazamiento del modo de desglose. Pásalo solo junto con un único tipo accesible en types
limit: number
Tamaño de página del modo de desglose. Pásalo solo junto con un único tipo accesible en types, de lo contrario, la API responde 400 "El modo de desglose (límite/desplazamiento) requiere exactamente un tipo accesible en types". Sin él, se devuelve cada grupo en su totalidad
langCode: string
Código de idioma. Predeterminado: "en_US". El índice de búsqueda es por idioma: una palabra de una segunda localidad solo se encuentra cuando se envía su propio langCode (CMS-912)
ejemplo: "en_US". El índice de búsqueda es por idioma: una palabra de una segunda localidad solo se encuentra cuando se envía su propio langCode (CMS-912)
Ejemplos
Ejemplo mínimo
const response = await Search.globalSearch('winter');
Ejemplo con atributos
// Drilldown: offset/limit are accepted only alongside exactly one type.
const response = await Search.globalSearch('winter', ['products'], 'visible', 0, 20);
Renderizando los grupos
const { query, groups } = await Search.globalSearch('test');
groups.forEach((group) => {
console.log(`${group.type} (${group.items.length}${group.hasMore ? '+' : ''})`);
group.items.forEach((item) => {
// fragment is plain text — safe to highlight yourself
console.log(item.title ?? item.identifier, item.matchKind, item.fragment);
});
});
Ejemplo de respuesta
{
"query": "test",
"groups": [
{
"type": "pages",
"items": [
{
"type": "pages",
"id": 50,
"title": "Test",
"matchKind": "exact",
"matchedField": "url",
"subtitle": "test",
"langCode": "en_US"
}
],
"hasMore": false
},
{
"type": "blocks",
"items": [
{
"type": "blocks",
"id": 4,
"title": "test",
"identifier": "test",
"matchKind": "exact",
"matchedField": "identifier",
"langCode": "en_US"
}
],
"hasMore": false
},
{
"type": "discounts",
"items": [
{
"type": "discounts",
"id": 1,
"title": "Example discount",
"identifier": "example_discount",
"matchKind": "attributeValue",
"matchedField": "attributeValue",
"matchedAttribute": {
"identifier": "example_discount",
"title": "example_discount"
},
"fragment": "test value",
"langCode": "en_US"
}
],
"hasMore": false
}
]
}
Esquema de respuesta
Esquema: IGlobalSearchResponse
query: string
La consulta para la que se produjeron los resultados.
ejemplo: "invierno"
groups: IGlobalSearchGroup[]
Registros encontrados agrupados por tipo de entidad.
groups.type: TGlobalSearchEntityType
Tipo de entidad del grupo.
ejemplo: "productos"
groups.items: IGlobalSearchItem[]
Registros encontrados dentro de este tipo de entidad.
groups.hasMore: boolean
Si hay más registros de este tipo disponibles más allá de la página solicitada.
ejemplo: false
ℹ️
offsetylimitrequieren exactamente un tipo accesible entypes; cualquier otra combinación responde 400. Omite ambos para obtener cada grupo en su totalidad - consulta Modo de desglose.
⚠️ El índice de búsqueda es por idioma (
langCode, agregado en 1.0.168). El parámetro se establece de forma predeterminada en el idioma dado adefineOneEntry, por lo que una llamada existente no necesita edición. En un sitio multilingüe, pasa el idioma de la página actual: antes de 1.0.168, el método no enviaba ningún idioma en absoluto, y una palabra de la segunda localidad regresaba como un grupo vacío, mientras que la misma solicitud con su propiolangCodedevolvía una página completa (CMS-912).