У меня создан фильтр материалов по характеристикам прикрепленных к ним товаров.
При изменении данных в самом товаре, например цена,Search API не индексирует заново ноду, ведь сама страница осталась незатронутой.
Подскажите как решить проблему?
на сайте настроен импорт товаров, и к одной ноде может быть прикреплено до 300 товаров
Комментарии
Трижды прочитал, вообще ничего не понял.
Что у Вас "товар" в терминах друпала? Что за нода, к которой он прикреплен, и зачем? И, наконец, что есть "страница", которая "осталась незатронутой"?
То есть хотелось бы понять ER-диаграмму (схему данных), ну и настройки индекса Search APi, конечно.
Это страница товара. Тип материала

страница товара содержит в себе вариации товаров (commerce products) при выборе вариации меняется цена.
Аналогично тому как это устроено на али экспресс, когда открываем страницу интересующего нас продукта, и выбираем нужные нам параметры
Search api индексирует сущность Страница товара (то есть мой тип материала к которому привязаны commerce products.
для индекса цены в полях включены соответствующие элементы

фильтр по цене работает корректно

но если мы обновим цену у товара, и сохраним сам товар.
то в фильтре будет показываться старая цена, так как переиндексации не происходит
А не происходит, потому что сама нода не была обновлена, а обновлен только товар (commerce product), который к ней прикреплен.
Вопрос, как проиндексировать, ноду если была обновлена одна из вариаций товаров, прикрепленная к ней
Ага, кажется понял. Для восьмёрки есть патч: https://www.drupal.org/project/search_api/issues/2007692
Для семёрки - понятия не имею.
Я с коммерсом не работал, но судя по описанию проблема должна быть практически у всех, кто его использует - непонятно как все остальные живут с этим. Можно конечно тупо перестраивать весь индекс после каждого изменения цены, но это не слишком изящное решение. Ещё можно "фиктивно" редактировать ноду (изменить какую-нибудь мелочь и потом вернуть как было), чтобы она переиндексировалась, но это ж помнить надо...
Пока решение: при импорте товаров буду записывать во временную таблицу id всех затронутых нод и передавать их в стандартную функцию индекса.
Написать хук, который будет при сохранении товара, обновлять ноду тоже не вариант, так как в ноде может быть несколько товаров а обновить ее нужно однократно