Saltar al contenido principal

getPagesByVectorSearch

Búsqueda semántica (vectorial) de páginas.

Descripción

Este método realiza una búsqueda semántica (vectorial) de páginas a partir de una consulta en lenguaje natural; se basa en el significado en lugar de en palabras clave exactas. Devuelve una Promesa que se resuelve en un objeto IPagesResponse, que es un contenedor con items (las páginas) y total, no un array simple.

Páginas.getPagesByVectorSearch(

body*, langCode, offset, limit

);

Esquema de parámetros

Esquema

body(requerido): IPagesVectorSearch
Cuerpo de búsqueda vectorial
ejemplo:

{ queryText: "winter sale" }

body.queryText(requerido): string
Consulta de búsqueda en lenguaje natural.
ejemplo: "venta de invierno"

body.vectorDistanceThreshold: number
Anulación del umbral de distancia coseno (0..2).
ejemplo: 0.3

body.maxHits: number
Candidatos Top-K obtenidos antes de la paginación. Predeterminado: 100. Máx: 500.
ejemplo: 10

body.debug: boolean
Cuando es verdadero, cada elemento devuelto obtiene un campo distance.
ejemplo: false

langCode: string
Código de idioma. Predeterminado: "en_US"
ejemplo: "en_US"

offset: number
Parámetro para la paginación. Predeterminado: 0
ejemplo: 0

limit: number
Parámetro para la paginación. Predeterminado: 30
ejemplo: 30

Ejemplos

Ejemplo mínimo

const response = await Pages.getPagesByVectorSearch({ queryText: 'winter sale' });

Ejemplo con atributos

const response = await Pages.getPagesByVectorSearch(
{
queryText: 'winter sale',
vectorDistanceThreshold: 0.3,
maxHits: 50,
debug: true,
},
'en_US',
0,
30,
);

Ejemplo de respuesta

{
"items": [
{
"id": 9,
"config": {},
"depth": 1,
"parentId": 8,
"pageUrl": "blog1",
"attributeSetIdentifier": null,
"localizeInfos": {
"title": "Blog 1",
"htmlContent": "",
"plainContent": "",
"menuTitle": "Blog 1"
},
"isVisible": true,
"products": 0,
"childrenCount": 0,
"type": "common_page",
"position": 1,
"templateIdentifier": null,
"isSync": false,
"categoryPath": "blog/blog1",
"rating": {},
"attributeValues": {},
"moduleFormConfigs": []
}
],
"total": 1
}

Esquema de respuesta

Esquema: IPagesResponse

items: IPagesEntity[]
Array de objetos de página encontrados.

items.id: number
El identificador del objeto.
ejemplo: 8

items.parentId: number | null
El id de la página padre, si contiene null, entonces es la página de nivel superior.
ejemplo: 10

items.pageUrl: string
Url única de la página.
ejemplo: "blog"

items.depth: number
Profundidad de anidación de la página en relación con parentId.
ejemplo: 10

items.localizeInfos: ILocalizeInfo
El nombre de la página, teniendo en cuenta la localización.
ejemplo:

{
"title": "Blog",
"menuTitle": "Blog",
"htmlContent": "",
"plainContent": ""
}

items.isVisible: boolean
Un signo de visibilidad de la página.
ejemplo: true

items.type: PageType
Tipo de página.
ejemplo: "common_page"

items.templateIdentifier: string | null
Id de usuario de la plantilla vinculada.
ejemplo: "template"

items.attributeSetIdentifier: string | null
Id del conjunto de atributos.
ejemplo: "page"

items.attributeValues: IAttributeValues
Mapa de valores de atributos indexados por marcador; objeto vacío cuando no hay ninguno.
ejemplo:

{
"text": {
"type": "string",
"value": "some text",
"position": 0,
"additionalFields": []
}
}

items.isSync: boolean
Indicación de indexación de la página.
ejemplo: true

items.template: object
Objeto de plantilla.
ejemplo:

{}

items.position: number
Número de elemento (para ordenación).
ejemplo: 2

items.config: Record<string, number>
Configuraciones de salida para páginas de catálogo.
ejemplo:

{
"rowsPerPage": 1,
"productsPerRow": 1
}

items.products: number
El número de productos vinculados a la página.
ejemplo: 0

items.childrenCount: number
Conteo de hijos.
ejemplo: 1

items.blocks: IBlockEntity[] | string[]
bloques.
ejemplo:

{
"id": 4,
"attributeSetIdentifier": null,
"title": "Template",
"generalTypeId": 4,
"identifier": "template",
"version": 0,
"generalTypeName": "catalog_page",
"attributeValues": {},
"position": 1
}

items.blocks.attributeValues: IAttributeValues
Mapa de valores de atributos indexados por marcador; objeto vacío cuando no hay ninguno.
ejemplo:

{
"block-text": {
"type": "string",
"value": "some text",
"isIcon": false,
"position": 0,
"additionalFields": [],
"isProductPreview": false
}
}

items.blocks.id: number
Identificador único del bloque.
ejemplo: 1234

items.blocks.localizeInfos: ILocalizeInfo
Información de localización para el bloque.
ejemplo:

{
"key": "value"
}

items.blocks.version: number
Versión de la entidad del bloque.
ejemplo: 1

items.blocks.identifier: string
Identificador de cadena único para el bloque.
ejemplo: "block1"

items.blocks.type: BlockType
Tipo del bloque.
ejemplo: "product"

items.blocks.position: number
Posición del bloque para ordenación.
ejemplo: 1

items.blocks.templateIdentifier: string | null
Identificador de la plantilla utilizada por el bloque, o null si no es aplicable.
ejemplo: "template1"

items.blocks.isVisible: boolean
Indica si el bloque es visible.
ejemplo: true

items.blocks.countElementsPerRow: number
Número de elementos mostrados por fila en el bloque, si es aplicable.
ejemplo: 3

items.blocks.quantity: number
Cantidad de artículos en el bloque, si es aplicable.
ejemplo: 5

items.blocks.similarProducts: IProductsResponse
Respuesta que contiene productos similares asociados con el bloque.
ejemplo:

{
"total": 10,
"items": []
}

items.blocks.products: IProductsEntity[]
Array de entidades de productos asociadas con el bloque.
ejemplo:

[
{
"id": 1,
"name": "Product 1"
},
{
"id": 2,
"name": "Product 2"
}
]

items.moduleFormConfigs: Array<IFormConfig>
Configuraciones de formularios de módulo vinculadas a la página.

items.rating: IRating
Datos de calificación.

items.total: string
Número total de productos vinculados a la página.
ejemplo: "10"

items.categoryPath: string | null
Cadena de ruta de categoría; null para páginas anidadas que no tienen su propia ruta de categoría.
ejemplo: "catalog"
items.distance: number
Distancia coseno a la consulta. Devuelto solo por el punto final de búsqueda semántica (vectorial) cuando se pasa debug: true en el cuerpo de búsqueda.
ejemplo: 0.12

total: number
Número total de registros encontrados.
ejemplo: 100

ℹ️ La búsqueda semántica se basa en el significado, no en el texto literal. Para coincidencias de palabras clave en todos los tipos de entidades a la vez, utiliza globalSearch().