Saltar al contenido principal

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

ℹ️ offset y limit requieren exactamente un tipo accesible en types; 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 a defineOneEntry, 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 propio langCode devolvía una página completa (CMS-912).