AACsearch
SDKРецепты

Рецепты

Готовые "копировать-вставить" рецепты для самых частых паттернов AACsearch SDK — автокомплит, фасетный поиск, листинги товаров, трекинг кликов, scoped токены, мульти-аренда, мульти-локали и graceful failure.

Эти рецепты предполагают что вы уже прошли настройку Browser SDK и у вас есть search-only API-ключ (ss_search_*). Все примеры типизированы под @aacsearch/client (Node + браузер) — адаптируйте под другие языки по необходимости.

Выберите рецепт

РецептЧто получите
АвтокомплитДебаунс-поиск по мере ввода с выпадающим списком предложений
Фасетный поискБоковая панель фильтров с множественным выбором, ведомая счётчиками фасетов AACsearch
Страница листинга товаровServer-rendered PLP с фильтрами, сортировкой, пагинацией
Бесконечный скроллLoad-more пагинация через useInfiniteQuery из TanStack Query
Аналитика кликовТрекинг кликов и конверсий через events/track
Рекомендации при пустом результатеРезервный контент когда found: 0
Запасной поискДеградация по плавной кривой когда AACsearch недоступен
Scoped B2B-каталогЦеновые тиры и видимость SKU per-customer через scoped токены
Изоляция арендаторов в маркетплейсеМульти-вендорный маркетплейс где каждый сторфронт видит только свои SKU
Мультилокальный каталогТе же товары на en/de/es/fr/ru — один индекс с фасетом locale

Общая настройка

Каждый рецепт предполагает один из этих клиентов:

// Browser-safe (только поиск)
import { SearchClient } from "@aacsearch/client";

const client = new SearchClient({
	baseUrl: process.env.NEXT_PUBLIC_AACSEARCH_BASE_URL!,
	apiKey: process.env.NEXT_PUBLIC_AACSEARCH_SEARCH_KEY!, // ss_search_*
	indexSlug: "products",
});
// Server-only (полный CRUD)
import { AdminClient } from "@aacsearch/client";

const admin = new AdminClient({
	baseUrl: process.env.AACSEARCH_BASE_URL!,
	apiKey: process.env.AACSEARCH_ADMIN_KEY!, // aa_admin_*
	projectId: process.env.AACSEARCH_ORG_ID!,
});

Образцовый датасет, используемый в рецептах:

type Product = {
	id: string;
	external_id: string;
	title: string;
	description: string;
	brand: string;
	categories: string[];
	price: number; // major units, decimal
	in_stock: boolean;
	locale: "en" | "de" | "es" | "fr" | "ru";
	organization_id: string; // для multi-tenant рецептов
	customer_tier?: "retail" | "wholesale" | "vip"; // только B2B
};

Каждый рецепт можно запустить независимо. У них общие соглашения (датасет, имена env-переменных, нейминг), но любой можно скопировать без настройки остальных.

Чего здесь нет

Связанные

On this page