
Индексация товаров
Для получения списка похожих товаров необходимо выполнить несколько шагов:
- создать товары с изображениями
- провести векторизацию и выполнить индексацию.
Настройка категории (опционально)
Можно исключить определённые категории из индексации с помощью настроек miniShop2.
Шаги по настройке:
Откройте настройки miniShop2
- Перейдите в Пакеты → miniShop2 → Настройки → Опции.
Создайте новую опцию
- Нажмите кнопку Добавить опцию.
- В поле Ключ укажите:
idimage
(в нижнем регистре, без пробелов). - В поле Название введите: Исключенные категории для индексации.
Выберите категории для исключения
- В дереве категорий опции выберите нужные категории, которые не должны индексироваться.
Сохраните изменения
- Нажмите кнопку Сохранить.
После выполнения этих шагов товары из выбранных категорий не будут участвовать в индексации и создании векторов.
1. Создание товаров
Перейдите на вкладку Пакеты → ID image → Товары и нажмите «Создать товары».
Запустится процесс создания товаров. Дождитесь его завершения.
После завершения процесса в списке появятся товары, готовые для векторизации и индексации.
2. Получение векторов
В разделе Действия выберите «Загрузить изображения». Будет создан список заданий для запроса в сервис idimage.ru.
После создания заданий для загрузки изображений появится запрос на запуск очереди. Нажмите «Да».
Дождитесь завершения загрузки, не закрывайте окно.
Важно
- Получение векторов может занять значительное время. За один проход обрабатывается 20 изображений.
- Время выполнения одного прохода зависит от скорости интернета и может составлять от 3 секунд и более.
3. Индексация товаров
В разделе Действия выберите «Индексировать товары». Будет создан список заданий для индексации.
После создания заданий появится запрос на запуск очереди для получения похожих товаров. Подтвердите действие или вы может позже запустить очередь на вкладке "Задания".
Важно
- Убедитесь, что для всех изображений получены вектора.
- Индексация может занять значительное время. Скорость выполнения зависит от количества товаров и мощности сервера. Чем больше товаров, тем дольше занимает процесс.
4. Размещение сниппета на странице
В MiniShop2 уже есть готовый сниппет для выборки товаров — msProducts, поэтому будем использовать его в примере.
Шаг 1: Вставка кода в шаблон карточки товара
Добавьте следующий код в шаблон карточки товара:
{var $ids = $modx->runSnippet('idImageSimilar', [
'pid' => $modx->resource->id,
'min_scope' => 65,
'limit' => 4
])}
{if $ids}
{$modx->runSnippet('msProducts', [
'resources' => $ids,
'sortby' => "FIELD(msProduct.id, {$ids})",
'parents' => 0,
])}
{/if}
Как работает индексация
Допустим, в каталоге имеется 1000 товаров с изображениями.
При индексации каждое изображение сравнивается с 999 другими. Общее количество операций вычисляется так:
[ 1000 \times 999 = 999 000 ]
После выполнения этих операций отбираются наиболее похожие изображения, и формируется массив данных с ID товара и коэффициентом схожести.
Задания
Задания необходимы для бесперебойного процесса индексации и векторизации. Вы можете управлять очередью заданий вручную или настроить их автоматический запуск в фоновом режиме.