Componentes que utilizan Typesense
TypesenseRecommender
El componente TypesenseRecommender se encuentra en src/components/recommenders-carousel/typesense-recommender.tsx.
import React from "react";
import RecommendersCarousel from "@components/recommenders-carousel/index";
type TypesenseRecommenderProps = {
title: string,
} & React.HTMLAttributes<HTMLDivElement>;
const TypesenseRecommender = (props: TypesenseRecommenderProps) => {
const { title = '' } = props;
return <RecommendersCarousel items={[]} title={title} />
}
export default TypesenseRecommender;
Este componente envuelve el componente RecommendersCarousel para mostrar recomendaciones basadas en Typesense.
Implementación en páginas
Página de producto
En pages/p/[...sku].js y pages/pla/[sku].js, se importan las utilidades de Typesense, para obtener información del producto actual y sus variaciones
import { IndexName, getNewSearchClient, categoryFields} from "src/utils/typesense";
Página de categoría
En pages/c/[...slug].tsx y pages/category/[...slug].tsx, se importa el cliente de búsqueda de Typesense, para utilizar en los componentes de Algolia (con el typesense instantsearch adapter)
import {getNewSearchClient} from "@/utils/typesense"
Flujo de uso
- Se crea un cliente de búsqueda con
getNewSearchClient() - Se utilizan los métodos del
TypesenseServicepara realizar búsquedas - Los resultados se pasan a componentes como
RecommendersCarouselpara mostrarlos
Ejemplo de uso
// Ejemplo de uso del servicio TypesenseService
const bestSellers = await TypesenseService.getBestSellers();
// Ejemplo de creación de un cliente de búsqueda
const searchClient = getNewSearchClient('unique-id', true, {
query_by: "name,sku,categories"
});
// Ejemplo de búsqueda por SKU
const product = await TypesenseService.searchBySku({
sku: "11_1",
attributesToRetrieve: "name,price,image,stock"
});
Consideraciones de rendimiento
- Typesense implementa caché de resultados por 5 segundos (
cacheSearchResultsForSeconds: 1 * 5) - Se utiliza muestreo de facets para mejorar el rendimiento (
facet_sample_percent: 15)- Mientras más pequeño sea el número, menos facets pueden listarse, si el catálogo a mostrar en el cliente tiene muchos, se debe jugar con este parámetro
- Los clientes se almacenan en caché para reutilizarlos