Strapi Search Integration — синхронизация в реальном времени с AACsearch

Alex Chibilyaev

Alex Chibilyaev

5/3/2026

#strapi#cms#integration#connector#headless#sync
Strapi Search Integration — синхронизация в реальном времени с AACsearch

Strapi — одна из самых популярных headless CMS-платформ, и неспроста. Экосистема плагинов, REST и GraphQL API, а также конструктор типов контента делают её фаворитом среди команд, создающих цифровые продукты. Но когда дело доходит до поиска, встроенные возможности Strapi ограничиваются SQL-запросами с LIKE. Здесь на помощь приходит AACsearch.

Проблема

Сайт на Strapi обычно содержит каталоги товаров, статьи блога, документацию или медиафайлы. По мере роста контента поиск становится медленным и неточным. Встроенный поиск Strapi:

  • Использует SQL LIKE-запросы — никакого ранжирования по релевантности
  • Не обрабатывает опечатки и нечёткий поиск
  • Не поддерживает фасетную навигацию
  • Не предоставляет аналитику для понимания пользовательских запросов

Коннектор AACsearch для Strapi решает все эти проблемы.

Как работает коннектор Strapi

Интеграция через хуки жизненного цикла

Коннектор подключается к событиям жизненного цикла Strapi — afterCreate, afterUpdate и afterDelete — на настроенных вами типах контента.

// Lifecycle hook in src/api/product/content-types/product/lifecycles.ts
module.exports = {
	async afterCreate(event) {
		await AACSearch.index({
			collection: "product",
			document: mapProductToSearchDoc(event.result),
		});
	},
	async afterUpdate(event) {
		await AACSearch.update({
			collection: "product",
			document: mapProductToSearchDoc(event.result),
		});
	},
	async afterDelete(event) {
		await AACSearch.delete({
			collection: "product",
			id: event.result.id,
		});
	},
};

Маппинг типов контента

Вы определяете, как каждый тип контента Strapi сопоставляется с поисковой коллекцией. Маппинг задаётся через простой конфигурационный файл:

{
	"collections": [
		{
			"strapiContentType": "product",
			"searchCollection": "products",
			"fields": {
				"title": { "type": "string", "searchable": true },
				"description": { "type": "string", "searchable": true },
				"price": { "type": "float", "facet": true },
				"category": { "type": "string", "facet": true, "searchable": true },
				"images": { "type": "string[]", "source": "media.url" },
				"variants": {
					"type": "object[]",
					"fields": {
						"sku": { "type": "string" },
						"color": { "type": "string", "facet": true },
						"size": { "type": "string", "facet": true },
						"stock": { "type": "int32" }
					}
				}
			}
		}
	]
}

Настройка коннектора

  1. Установите плагин AACsearch для Strapi через маркетплейс Strapi или npm.
  2. Укажите ваш API-ключ AACsearch и URL эндпоинта в настройках плагина.
  3. Сопоставьте ваши типы контента с поисковыми коллекциями через панель администратора.
  4. Синхронизируйте существующий контент — коннектор выполнит первичный массовый импорт.
  5. Готово — все последующие изменения синхронизируются в реальном времени.

Возможности

  • Синхронизация в реальном времени: Изменения контента отражаются в результатах поиска за секунды
  • Массовый импорт: Индексация всего существующего контента при первом запуске
  • Поддержка черновиков/публикаций: По умолчанию индексируется только опубликованный контент
  • Обработка медиа: URL изображений автоматически извлекаются из медиабиблиотеки Strapi
  • Интернационализация: С учётом локали — каждая языковая версия становится отдельным документом или полем
  • Поля компонентов: Dynamic Zones и компоненты Strapi преобразуются в поисковые поля

Производительность

Для крупных проектов на Strapi (100 000+ документов) коннектор поддерживает пакетные операции:

  • Массовый импорт использует постраничные запросы с настраиваемым размером пакета
  • Дельта-синхронизация отправляет только изменённые поля, а не весь документ
  • Удалённый контент удаляется из индекса в рамках хука жизненного цикла

Когда использовать коннектор Strapi

Этот коннектор идеально подходит для:

  • Интернет-магазинов на базе Strapi (с использованием Strapi E-commerce или собственной настройки)
  • Сайтов с большим объёмом контента — блоги, документация, медиатеки
  • Многоязычных сайтов, где поиск нужен на каждом языке
  • Команд, уже использующих Strapi, которые хотят получить поиск уровня managed search providers без цены managed search providers

Коннектор AACsearch для Strapi находится в разработке. Запишитесь на ранний доступ, чтобы получить уведомление о запуске.