Aller au contenu principal

getPagesByVectorSearch

Recherche sémantique (vectorielle) pour les pages.

Description

Cette méthode effectue une recherche sémantique (vectorielle) pour les pages à partir d'une requête en langage naturel - elle correspond au sens plutôt qu'aux mots-clés exacts. Elle renvoie une Promesse qui se résout en un objet IPagesResponse - un conteneur avec items (les pages) et total - pas un tableau nu.

Pages.getPagesByVectorSearch(

body*, langCode, offset, limit

);

Schéma des paramètres

Schéma

body(obligatoire): IPagesVectorSearch
Corps de la recherche vectorielle
exemple:

{ queryText: "winter sale" }

body.queryText(obligatoire): string
Requête de recherche en langage naturel.
exemple : "vente d'hiver"

body.vectorDistanceThreshold: number
Remplacement du seuil de distance cosinus (0..2).
exemple : 0.3

body.maxHits: number
Top-K candidats récupérés avant la pagination. Par défaut : 100. Max : 500.
exemple : 10

body.debug: boolean
Lorsque vrai, chaque élément retourné obtient un champ distance.
exemple : false

langCode: string
Code de langue. Par défaut : "en_US"
exemple : "en_US"

offset: number
Paramètre pour la pagination. Par défaut : 0
exemple : 0

limit: number
Paramètre pour la pagination. Par défaut : 30
exemple : 30

Exemples

Exemple minimal

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

Exemple avec des attributs

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

Exemple de réponse

{
"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
}

Schéma de réponse

Schéma : IPagesResponse

items: IPagesEntity[]
Tableau des objets de page trouvés.

items.id: number
L'identifiant de l'objet.
exemple : 8

items.parentId: number | null
L'id de la page parente, s'il contient null, alors c'est la page de niveau supérieur.
exemple : 10

items.pageUrl: string
Url unique de la page.
exemple : "blog"

items.depth: number
Profondeur d'imbrication de la page par rapport à parentId.
exemple : 10

items.localizeInfos: ILocalizeInfo
Le nom de la page, en tenant compte de la localisation.
exemple :

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

items.isVisible: boolean
Un signe de visibilité de la page.
exemple : true

items.type: PageType
Type de page.
exemple : "common_page"

items.templateIdentifier: string | null
Identifiant utilisateur du modèle lié.
exemple : "template"

items.attributeSetIdentifier: string | null
Identifiant de l'ensemble d'attributs.
exemple : "page"

items.attributeValues: IAttributeValues
Carte des valeurs d'attributs indexées par marqueur ; objet vide lorsqu'il n'y en a pas.
exemple :

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

items.isSync: boolean
Indication de l'indexation de la page.
exemple : true

items.template: object
Objet modèle.
exemple :

{}

items.position: number
Numéro de l'élément (pour le tri).
exemple : 2

items.config: Record<string, number>
Paramètres de sortie pour les pages de catalogue.
exemple :

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

items.products: number
Le nombre de produits liés à la page.
exemple : 0

items.childrenCount: number
Nombre d'enfants.
exemple : 1

items.blocks: IBlockEntity[] | string[]
blocs.
exemple :

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

items.blocks.attributeValues: IAttributeValues
Carte des valeurs d'attributs indexées par marqueur ; objet vide lorsqu'il n'y en a pas.
exemple :

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

items.blocks.id: number
Identifiant unique du bloc.
exemple : 1234

items.blocks.localizeInfos: ILocalizeInfo
Informations de localisation pour le bloc.
exemple :

{
"key": "value"
}

items.blocks.version: number
Version de l'entité de bloc.
exemple : 1

items.blocks.identifier: string
Identifiant unique en chaîne pour le bloc.
exemple : "block1"

items.blocks.type: BlockType
Type du bloc.
exemple : "product"

items.blocks.position: number
Position du bloc pour le tri.
exemple : 1

items.blocks.templateIdentifier: string | null
Identifiant du modèle utilisé par le bloc, ou null si non applicable.
exemple : "template1"

items.blocks.isVisible: boolean
Indique si le bloc est visible.
exemple : true

items.blocks.countElementsPerRow: number
Nombre d'éléments affichés par ligne dans le bloc, si applicable.
exemple : 3

items.blocks.quantity: number
Quantité d'articles dans le bloc, si applicable.
exemple : 5

items.blocks.similarProducts: IProductsResponse
Réponse contenant des produits similaires associés au bloc.
exemple :

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

items.blocks.products: IProductsEntity[]
Tableau des entités de produits associées au bloc.
exemple :

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

items.moduleFormConfigs: Array<IFormConfig>
Configurations de formulaire de module liées à la page.

items.rating: IRating
Données d'évaluation.

items.total: string
Nombre total de produits liés à la page.
exemple : "10"

items.categoryPath: string | null
Chaîne de chemin de catégorie ; null pour les pages imbriquées qui n'ont pas de chemin de catégorie propre.
exemple : "catalog"
items.distance: number
Distance cosinus par rapport à la requête. Renvoie uniquement par le point de terminaison de recherche sémantique (vectorielle) lorsque debug: true est passé dans le corps de recherche.
exemple : 0.12

total: number
Nombre total d'enregistrements trouvés.
exemple : 100

ℹ️ La recherche sémantique correspond au sens, et non au texte littéral. Pour une correspondance de mots-clés à travers chaque type d'entité à la fois, utilisez globalSearch().