Создание фасетных индексов
Данная форма служит для создания фасетных индексов одного или всех торговых каталогов.
Контекстная панель
| Кнопка | Описание |
|---|---|
| Вернуться в список информационных блоков | Переход на страницу со списком каталогов, для которых нужно создать (или уже создан) фасетный индекс. |
Поля формы
| Поле | Описание |
|---|---|
| Информационный блок | Указывается торговый каталог (либо выбираются все), для которого следует создать фасетный индекс. |
| Шаг | Интервал одного шага создания индекса в секундах. |
Кнопки управления
| Кнопка | Описание |
|---|---|
| Начать | Запуск процесса создания фасетного индекса. |
| Остановить | Остановка процесса создания индекса. |
| Продолжить | Продолжение процесса создания фасетного индекса. |
Новинки документации в соцсетях:
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.
Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
Фасетные индексы
Страница Фасетные индексы инфоблоков (Контент > Инфоблоки > Фасетные индексы) служит для создания фасетных индексов для инфоблоков, являющимися торговыми каталогами.
Важно! Создание фасетных индексов доступно только для тех каталогов, в которых есть хотя бы одно отображаемое свойство в умном фильтре.
Контекстная панель
Контекстная панель отображается только при наличии торговых каталогов, для которых необходимо создать фасетные индексы.
| Кнопка | Описание |
|---|---|
| Создать все | Переход к форме создания фасетных индексов. Кнопка не отображается, если для всех торговых каталогов фасетные индексы созданы и их пересоздание не требуется. |
| Настроить | Позволяет перейти к диалогу настройки внешнего вида отчетной формы. |
| Excel | Экспортирует данные из отображаемой таблицы в MS Excel. |
Список инфоблоков
- Создать — переход к форме создания фасетных индексов.
Смотрите также
Новинки документации в соцсетях:
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.
Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
Юрий Гранд 30.03.2020 14:40:00
Для переиндексации элемента можно использовать метод:
\Bitrix\Iblock\PropertyIndex\Manager::updateElementIndex($IBLOCK_ID,$PRODUCT_ID);
Владислав Морсин 17.04.2015 21:38:47
Для удаления фасетного индекса инфоблока надо выполнить:
CModule::IncludeModule('iblock'); Bitrix\Iblock\PropertyIndex\Manager::DeleteIndex($iblockId); Bitrix\Iblock\PropertyIndex\Manager::markAsInvalid($iblockId);
***********
От разработчика:
| Цитата |
|---|
| Вместо DeleteIndex (в этом случае) лучше использовать dropIfExists. |
Умный фильтр весь такой фасетный и няшный
Умный фильтр показывает отбор товаров по заданным свойствам. Например, искать белый айфон оптимально по бренду «Apple» и цвету «белый». Раньше, обрабатывая запрос, фильтр перебирал все товары каталога. Процесс занимал до 10 секунд и более. Фасета заранее просчитывает и составляет варианты запросов, сохраняет в системе и выдает по запросу. Она в несколько раз сокращает время работы фильтра, снижая нагрузку на ваш магазин.
Героев нужно знать в лицо
Сложнейшую работу в фасетном фильтре выполнили:
Максим Смирнов (гениальная разработка фасеты в один клик):
Анна Овчинникова (няшный js в выборе свойств и адаптивность фильтра):

Обновление доступно клиентам и партнерам, которые устанавливают бета-версии обновлений.
Создаем фасетный индекс
После установки обновления система предложит «создать фасетный индекс». На экране появится зеленая плашка, знакомая пользователям нашего продукта:
Переходим из плашки к созданию индекса. Если вы закрыли данную плашку, и она больше не появляется, найти создание индекса можно по пути:
Рабочий стол -> Контент -> Инфоблоки -> Фасетные индексы
Выбираете нужный каталог и нажимаете «Создать». В моем случае это два инфоблока, связанных между собой: основной и инфоблок торговых предложений. Создаю индексы для обоих.
Индексы созданы, можно расходиться. При добавлении нового товара в каталог индексы работают автоматически. Вот в чем гениальность реализации от Максима Смирнова — вы нажимаете кнопку, а дальше «все работает само».
Будьте внимательны! Действие для объемных каталогов с большим количеством свойств и элементов может занять продолжительное время. Создавайте фасетный индекс в часы наименьшей нагрузки на ваш магазин.
Умный фильтр 1.0
Дальше в игру вступает визуальная часть, созданная Анной. Нужно произвести некоторые настройки.
Давайте посмотрим, как выглядит фильтр после установки дистрибутива 14,5 версии продукта:
В нем нет фильтрации по размерам и цветам. Они отсутствовали, так как их появление в фильтре могло быть представлено только чек-боксами или числовыми диапазонами — это не эффективно. Также в фильтре не могли использоваться свойства с типом «справочник» (на их основе были сделаны цвета, что еще больше сужало схему выбора).
Красота умного фильтра 2.0
Давайте посмотрим, что появилось в настройке свойств инфоблока:
В 14,5 версии продукта была только одна галочка «Показывать в умном фильтре». Вы могли или добавить свойство в умный фильтр или не добавлять. Но повлиять на визуальное представление свойства было невозможно.
С 15 версии появилась галочка «Показывать развернутым». При ее выборе свойство отображается в публичной части в развернутом виде:
На скриншоте свойства «Производитель» и «Артикул» показаны в свернутом виде, свойство «Материал» — в развернутом. (У данного свойства стоит галочка «Показывать развернутым»).
Также появилась возможность выбирать вид отображения свойства:
Список меняется в зависимости от выбранного типа у свойства. В первом случае у свойства выбран тип «справочник», во втором «список».
Давайте добавим свойство «Бренд» в умный фильтр:
Чтобы свойство появилось в умном фильтре, и вы могли задать вид, в котором будет показано свойство необходимо включить опции «Показывать на странице редактирования элемента» и «Показывать в умном фильтре» (установить галочки).
«Выпадашка» — «Вид в умном фильтре» дает возможность (в зависимости от типа свойства) задать, как будет выглядеть ваше свойство в умном фильтре.
Если вы хотите показывать пользователю при входе свойство в развернутом виде, установите галочку напротив «Показать развернутым».
Фильтр изменился. Мы вывели свойство «Бренд» с типом «Справочник», выбрали его представление в виде «Флажков с названиями и картинками» и установили опцию «Раскрывать свойство при входе пользователя».
Свойства «Цвет» и «Размер» тоже хочется видеть в умном фильтре.
Не буду показывать на скриншотах, как меняются настройки, покажу результат:
В виде «выпадашек» я вывел свойства цвета (с картинками и названиями) и размер одежды.
Вы можете изменить положение свойства в фильтре(поднять или опустить), меняя их сортировку в списке.
Обратите внимание! Когда вы добавляете или убираете свойство в умном фильтре, необходимо повторно произвести создание фасетного индекса.
Функциональный выбор цен
Хотелось бы обратить ваше внимание на новый вид контрола для цен. Для демонстрации я записал небольшое видео:
- светло серый – в диапазоне нет подходящих товаров
- темно серый – цвет показывает сектор наличия товаров в выбранном диапазоне (вы можете сузить диапазон цен)
- светло синий – товар для отбора находится за диапазоном выбора
- темно синий – в выбранном диапазоне есть товары
Изменился вид контролов диапазона. В старом фильтре они были круглыми, их нельзя было приближать, и диапазон суммы мог оставался слишком широким. Новые контролы могут сойтись вплотную, регулируя минимальные диапазоны. Также их можно перемещать одновременно.
Приятного вам использования. Не забывайте в комментариях задавать свои вопросы.
26.12.2014 16:25 26.12.2014 16:25:32
26.12.2014 19:32:02
стандартный вопрос? это я так понимаю еще не в релизе? (или ошибаюсь) когда в релизе тогда!
27.12.2014 15:58:34
В бете же уже скачать можно
27.12.2014 16:28:49
бетта — это не стабильный еще,
а я говорю про стабильные обновления для боевых сайтов!
29.12.2014 12:22:12
Все верно, это пока бета версия, стабильная версия ожидается уже в новом году.
30.01.2015 17:28:10
Вижу iblock 15.0.5 в бете . В релизе 15.0.4 и в нем еще нет фильтрации по свойствам типа «Справочник». В какой версии есть эта возможность? В описании версии 15.0.5 сказано только об исправлении ошибок потому не пробовал.
Добавлено : iblock 15.0.5 вышел в релиз. В настройках свойства типа Справочник вижу варианты с картинками.
27.12.2014 17:40:22
Хорошие и долгожданные изменения, спасибо!
- Как реализован индекс и как он обновляется (крон/агент/событие)?
- Как хранятся данные и можно ли к ним получать доступ по API?
- Как происходит обновление индекса на инфоблоках от 100 тыс товаров при обмене с 1С?
29.12.2014 12:34:44
| Как реализован индекс и как он обновляется (крон/агент/событие)? |
При создание или изменение товара, по событиям. Если менялись свойства или добавлялись, индекс нужно руками пересоздать. В статье я этот момент показывал, ну и для администраторов появляется зеленая плашка на такое пересоздание.
| Как хранятся данные и можно ли к ним получать доступ по API? |
Доступ к данным не планировался, но API есть, в модуле инфоблоков в папке lib можно посмотреть, оно не плохо документировано.
| Как происходит обновление индекса на инфоблоках от 100 тыс товаров при обмене с 1С? |
Если это новые товары, но они не создают новых свойств, то по событию произойдет автоматический апдейт индекса, если это товары с новыми свойствами, то индекс нужно по окончание выгрузки пересоздать в ручную.
29.12.2014 13:47:32
Юрий, спасибо за уточнение, еще пара вопросов:
| При создание или изменение товара, по событиям. Если менялись свойства или добавлялись, индекс нужно руками пересоздать. |
получается, что если если каждый день добавляются новые товары/значения свойств, то каждый день надо пересоздавать индекс. А на больших каталогах, где индекс создается пару часов, это становится трудным делом.
| Если это новые товары, но они не создают новых свойств, то по событию произойдет автоматический апдейт индекса |
Допустим, товары новые, свойства не создаются дополнительные. Выгружаем 100 тыс товаров. Не помешает добавление фасета по событию выгрузке из 1С?
29.12.2014 16:33:53
| получается, что если если каждый день добавляются новые товары/значения свойств, то каждый день надо пересоздавать индекс. А на больших каталогах, где индекс создается пару часов, это становится трудным делом. |
У вас действительно каждый день появляются новые свойства? Чем же магазин торгует. Обычно ассортиментная матрица меняется не так часто, чтобы нельзя было обойтись текущими свойствами.
Да, при появлении нового свойства, требуется создание индекса, иначе откуда будут браться данные для вывода, вся суть фасеты, в просчитанных данных, для всех комбинаций.
| Допустим, товары новые, свойства не создаются дополнительные. Выгружаем 100 тыс товаров. Не помешает добавление фасета по событию выгрузке из 1С? |
Не помешает, производительность падает совсем незначительно. Главное не меняются свойства.
29.12.2014 21:28:15
Константин, добавление свойств и добавление значений свойств — это разные вещи. При добавлении значений индекс пересчитывается автоматически.
13.02.2015 12:47:59
>> для администраторов появляется зеленая плашка на такое пересоздание.
Покажите, пожалуйста, скрин, где должна быть эта плашка? Я вижу только отображение индекса в «Рабочий стол — Контент — Инфоблоки — Фасетные индексы», причём там ни удалить, ни пересоздать нельзя
08.04.2015 08:15:45
+1 никаких зеленых плашек, ни удалить ни пересоздать ничего нельзя.
upd:
выяснилось, что кнопки эти появляются только если у хотя-бы одного иблока значение PROPERTY_INDEX == «I».
То есть пока система не решит, что можно бы переиндексировать — переиндексировать никакой возможности нет. Зачем так сделано?
Например при выгрузке товаров из 1с при деактивации/удалении товара не обновляется максимальная цена в фасете мин-макс цены (если товар и был по максимальной цене). То есть при удалении товаров УЖЕ нужно переиндексировать всё заново. однако в интерфейсе кнопка переиндексации в этом случае отсутствует.
29.12.2014 18:35:26
29.12.2014 19:53:06
Фасета к скидкам не совсем подходит. А касательно идеи, могу сказать, что ее выполнить можно в ооооооооочень узком виде, то есть по факту это будет ограниченный набор скидок, строго ограниченный товарами, и для конкретной группы пользователей, например анонимные пользователи и пользователи сайта. И даже по товарам, скидки будут работать только простые, без условий, типа, товар на сумму, купи 3 товара, только в эту пятницу и т.п.
Либо как в вашем скриншоте, это будут баннеры, выведенные компонентом новостей, которые сообщают какие скидки есть и когда будут, без конкретного списка товаров. Что можно сделать и сейчас.
30.12.2014 04:43:45
| Либо как в вашем скриншоте, это будут баннеры, выведенные компонентом новостей, которые сообщают какие скидки есть и когда будут, без конкретного списка товаров. Что можно сделать и сейчас |
Сейчас скидки сделаны очень удобно и гибко. Но хочется чтобы был компонент вывода списка скидок в публичную часть (как список разделов инфоболка). просто баннеры — это не то.
Предположим сделали мы баннер. Сказали в нем «зимняя скидка 50%».
Как покупателю увидеть список всех товаров, к которым применена эта скидка?
Или как в рассылке дать ссылку сразу на страницу со списком товаров только к этой скидке?
Если такого списка нет — эффективность акции ниже. Особенно если каталог товаров большой.
Речь про про битриксный функционал, а не про частные решения которые можно сделать.
На лету фильтровать все товары, которые к скидке относятся, вряд ли возможно поэтому я и спросил про фасету.
04.01.2015 20:16:31
В новом умном фильтре, работающем на фасете перестали показываться товары без разделов. Т.е. если у компонента не задан параметр ИД раздела или элемент находится к корне инфоблока, то умный фильтр их не находит.
Если посмотреть таблицу фасетов этого инфоблока, то у элементов без раздела FACET_ID тоже нулевой.
Как быть с этой проблемой?
12.01.2015 14:55:23
Подтверждаем, была проблема, исправили и выйдет в обновление инфоблоки 15.0.3
Спасибо за бдительность!
25.01.2015 03:05:35

У нас после обновления до 15.0.6 умный фильтр не показывает свойства элементов, элементы в корне, без разделав. Как быть то.
28.01.2015 17:45:20
| обновления до 15.0.6 |
Это версия модуля main. Последне вышедшее обновление модуля iblock — 15.0.4
Исправление этой проблемы выйдет в обновлении iblock 15.0.5. При необходимости получить это исправление можно обратиться в ТП. Основной причиной является то, что фасетный индекс сейчас не может работать без указания раздела. Индекс будет доработан, но несколько позже.
29.01.2015 18:38:20

Евгений, а «несколько позже» это примерно когда?
29.01.2015 18:42:20
По срокам пока не могу сориентировать
09.01.2015 19:06:02
Подскажите.
А цены торговых предложений в фильтре уже работают?
12.01.2015 14:07:34
В разделе Фасетные индексы отображаются не все ИБ http://take.ms/DTUkT , есть предположение что там есть только те, у которых есть торговые предложения, это так? Почему просто торговые каталоги там не отображаются?
12.01.2015 14:58:00
Подтверждаем, была проблема, исправили и выйдет в обновление инфоблоки 15.0.3
Спасибо за бдительность!
13.01.2015 12:43:43
Фасетный фильтр показывает в результатах деактивированные торговые предложения,
Например: «размер 60», он есть у товара в торговых предложениях, но он не активен. http://SSMaker.ru/ad2b856f/
19.01.2015 15:13:59
Исправлено в обновлении iblock 15.0.4. Обновление на тестировании.
13.01.2015 15:36:08
«Няшный фильтр» и «няшный js». Кто-то совсем не умеет в использование слов.
18.01.2015 12:01:23
1) У товара есть неактивные торговые предложения (например цвет: черный, размер:38), и при выборе черного цвета размер 38 тоже остается, и показывает что найден товар. При переходе на результат поиска естественно ничего не найдено.
3) Если отчистить каталог, и через API вставить товары и торговые предложения, то фильтр ничего не показывает. Необходимо в настройках каталога снимать все галки со свойств участвующих в умном фильтре и ставить обратно!
4) При установке обновлений, даже после создания фасетных индексов, не создаются правильные (на сколько это возможно) комбинации в умном фильтре. Лечится так же как и в п.3.
Все компоненты стандартные.
Очень жаль, что люди тратят время на функционал типа вывод галочек и всякую требухню необходимую только для битрикса из коробки. При смене дизайна все равно никто это не использует. А вот нужный функционал так и не сделан.
19.01.2015 15:14:52
п.1 исправлен в обновлении iblock 15.0.4. Обновление на тестировании.
20.01.2015 12:34:28
Отличная новость, спасибо!
20.01.2015 13:11:46
По п.2-3 — полный сценарий действий приведите пожалуйста.
20.01.2015 14:38:15
Есть каталог, в нем товар с торговыми предложениями. Для свойств торговых предложений в настройках каталога стоят галочки «показывать в умном фильтре».
Все товары удалили через админку.
После через API вставили товар, потом торговые предложения к этому товару с их свойствами. Новые свойства не создавались, заполнялись уже существующие.
Далее заходим в публичной части с отключенным кешем в каталог, где есть умный фильтр. В фильтре пусто.
Потом в админке снимает все галки с «показывать в умном фильтре», сохраняем. Потом ставим их обратно. И в умном фильтре в публичной части все появилось.
20.01.2015 14:42:34
Алексей, под сценарием я подразумевал пример кода.
21.01.2015 15:45:33
$arFields = array( "ACTIVE" => "Y", "IBLOCK_ID" => self::$IBLOCK_PRODUCT_ID, "IBLOCK_SECTION_ID"=>self::$SECTIONS[self::$Products[$PROD_EXT_ID]['CATEGORY']], "NAME" => self::$Products[$PROD_EXT_ID]['NAME'], "DETAIL_TEXT_TYPE" => 'html', "DETAIL_TEXT" => self::$Products[$PROD_EXT_ID]['DESCRIPTION'], "IMPORT" => true); $arProp = array( "EXT_DONOR"=>"site", "BITRIX_EXT_ID"=>$PRODUCT_BITRIX_EXT_ID, "C_EXT_ID"=>$PROD_EXT_ID, "ARTICUL"=>self::$Products[$PROD_EXT_ID]['ARTICUL'] );
$oElement = new CIBlockElement(); $ELEMENT_ID = $oElement->Add($arFields, false, false, false); if($ELEMENT_ID) < CIBlockElement::SetPropertyValuesEx($ELEMENT_ID, false, $arProp); //-------Создаем и привязываем цену------// CCatalogProduct::Add(array("ID" =>$ELEMENT_ID)); $PRICE_TYPE_ID = 1; $arPriceFields = Array( "PRODUCT_ID" => $ELEMENT_ID, "CATALOG_GROUP_ID" => $PRICE_TYPE_ID, "PRICE" =>$PRODUCT_COST, "CURRENCY" => "RUB", "QUANTITY_FROM" => false, "QUANTITY_TO" => false ); CPrice::Add($arPriceFields); foreach(self::$Products[$PROD_EXT_ID]['OFFERS'] as $OFFER_ID => $OFFER_ARR) < $arOfferName=self::$Products[$PROD_EXT_ID]['NAME']; $arOfferProp = array( "EXT_DONOR" =>"sete", "BITRIX_EXT_ID" => $OFFER_ARR['ID'], "C_EXT_ID" => $OFFER_ARR['EXT_ID'], "CML2_LINK" => $ELEMENT_ID ); foreach($OFFER_ARR['ATTRS'] as $ATR_NAME => $ATR_VAL) < $PROPERTY_NAME = strtoupper(str_replace(" ","_",translate($ATR_NAME,'ru','en'))); $arOfferProp[$PROPERTY_NAME] = $ATR_VAL; $arOfferName .= ' '.$ATR_VAL; >if($OFFER_ARR['ACTIVE']==1) < $ACTIVE = "Y"; >else < $ACTIVE = "N"; >$arOfferFields = array( "ACTIVE" => $ACTIVE, "IBLOCK_ID" => self::$IBLOCK_OFFERS_ID, "NAME" => $arOfferName, "IMPORT" => true); if($OFFER_ARR['IMG']) < $Offer_DETAIL_PICTURE = CFile::MakeFileArray($_SERVER['DOCUMENT_ROOT'].'/bitrix/cron/images/'.$OFFER_ARR['IMG']); $arOfferFields['DETAIL_PICTURE'] = $Offer_DETAIL_PICTURE; >$offerElement = new CIBlockElement(); $offer_ID = $offerElement->Add($arOfferFields, false, false, false); if($offer_ID) < CIBlockElement::SetPropertyValuesEx($offer_ID, false, $arOfferProp); //-------Создаем и привязываем цену------// CCatalogProduct::Add(array("ID" =>$offer_ID)); $PRICE_TYPE_ID = 1; $arOfferPriceFields = Array( "PRODUCT_ID" => $offer_ID, "CATALOG_GROUP_ID" => $PRICE_TYPE_ID, "PRICE" =>$OFFER_ARR['PRICE'], "CURRENCY" => "RUB", "QUANTITY_FROM" => false, "QUANTITY_TO" => false ); CPrice::Add($arOfferPriceFields); > //sleep(3); >
21.01.2015 16:02:44
Теперь ясно. Да, при вызове CIBlockElement::SetPropertyValuesEx фасетный индекс сейчас не обновляется.
Вариант решения — после вызова CIBlockElement::SetPropertyValuesEx делать вызов
\Bitrix\Iblock\PropertyIndex\Manager::updateElementIndex(ID_инфоблока, ID_элемента);
Кстати, в вызове CIBlockElement::SetPropertyValuesEx передавайте верный второй параметр — сейчас у Вас на каждый вызов лишний запрос.
21.01.2015 16:15:43
08.03.2015 22:37:15
При изменении типа свойства (была строка, стал список) не происходит предложения обновить индекс. Так же если в цикле вызвать updateElementIndex(), то лишняя информация из таблицы b_iblock_
20.01.2015 08:39:46
Когда Битрикс накатит няшный умный фильтр на свои сайты? Хотя бы умный?
Например, Маркетплейс?
Очень странно, что там фильтр вышел еще с завода «не умный». Когда он поумнеет?
Да и подбор партнеров или типов проектов на сайтах клиентов сделать можно влегкую через умный фильтр.
В идеале, такой функционал сразу внедрять не только в коробки, которыми будут пользоваться другие, но и на свои проекты.
А то сейчас как в шутке»я не ем продукцию своей фабрики».
21.01.2015 14:54:26
а что у меня получается не так с инфоблоками и фасетным индексом если на сайте есть торговые каталоги а раздел индексов без кнопки создать индекс и без индексов. Описал эту ситуацию на форуме .
22.01.2015 14:29:04
Проверьте установку всех последних обновлений, должны стоять беты. Если ситуация не изменится, обратитесь пожалуйста в техническую поддержку, таких проблем пока не встречалось, заранее спасибо! Ну и отпишитесь если не сложно по результату.
23.01.2015 14:10:38
Должны быть свойства, у которых стоит флаг Использовать в умном фильтре. Тогда инфоблок появится в этом списке
23.01.2015 19:40:12
Дмитрий — отличное дополнение! Даже не подумал, что могут пытаться создавать фасету, без единого элемента добавленного в нее.
23.01.2015 14:29:37
Вопросы разработчикам. На проекте в ~50 000 товаров и 25 свойств в умном фильтре, таблица с фасетными данными получилась больше 1 500 000 записей, это как я понимаю, нормально?
Если убрать фильтр по секции (нужен сквозной фильтр с первого уровня каталога), то запрос на получение данных (SELECT F.FACET_ID ,F.VALUE ,MIN(F.VALUE_NUM) MIN_VALUE_NUM ,MAX(F.VALUE_NUM) MAX_VALUE_NUM . ) занимает ~9 секунд. Как-то не очень.
Если выкинуть из запроса подключения таблиц b_iblock, b_lang, b_iblock_element запрос занимает уже ~4 секунды. Можно ли сделать галки в настройках компонента фильтра для параметров ACTIVE_DATE и CHECK_PERMISSIONS? На обычном каталоге товаров совсем не нужно проверять активность этих элементов и права к ним, а на производительности это сказывается.
Далее, если добавить к таблице индекс по полю FACET_ID, то время запроса сократится до ~2 секунд. Вопрос, такой индекс не создан сразу по какой-то определённой причине?
23.01.2015 19:39:08
| На проекте в ~50 000 товаров и 25 свойств в умном фильтре, таблица с фасетными данными получилась больше 1 500 000 записей, это как я понимаю, нормально? |
Да это нормально, если будет больше свойств, объем данных будет расти.
| Если убрать фильтр по секции (нужен сквозной фильтр с первого уровня каталога), то запрос на получение данных (SELECT F.FACET_ID ,F.VALUE ,MIN(F.VALUE_NUM) MIN_VALUE_NUM ,MAX(F.VALUE_NUM) MAX_VALUE_NUM . ) занимает ~9 секунд. Как-то не очень. |
Мы не рассматривали такой вариант, что будут искать в каталоге на 50 000 элементов, без учета разделов.
| ACTIVE_DATE |
В фасете не учитывается
| CHECK_PERMISSIONS |
Отключается галочкой в настройке компонентов, она и влияет на это время. У вас данная галочка активна.
| Далее, если добавить к таблице индекс по полю FACET_ID, то время запроса сократится до ~2 секунд. Вопрос, такой индекс не создан сразу по какой-то определённой причине? |
Отлично если это помогает на вашем проекте, можно его создавать, единственно придется его контролировать и пересоздавать после изменений.
23.01.2015 21:59:46
Юрий, спасибо за ответ! Но я либо что-то не понял, либо не соглашусь с вами )
| В фасете не учитывается |
| Отключается галочкой в настройке компонентов, она и влияет на это время. У вас данная галочка активна. |
В файле /bitrix/components/bitrix/catalog.smart.filter/component.php, на строке 38, есть такой код:
$arResult["FACET_FILTER"] = array( "ACTIVE_DATE" => "Y", "CHECK_PERMISSIONS" => "Y", );
как видно, никакие галочки не учитываются. Далее это передаётся в
$this->facet->query($arResult["FACET_FILTER"]);
а в этом методе данные уже используется для построения блоков fr om и wh ere основного запроса:
$element->GetList(array(), $filter, false, false, array("ID")); $elementFrom = $element->sFrom; $elementWhere = $element->sWhere;
в итоге, проверка на активность по дате обязательна и даёт подключение трёх, не особо нужных, таблиц.
26.01.2015 13:12:03
| В файле /bitrix/components/bitrix/catalog.smart.filter/component.php, на строке 38, есть такой код: |
Подтверждаю, моя ошибка.
| в итоге, проверка на активность по дате обязательна и даёт подключение трёх, не особо нужных, таблиц. |
Спасибо подумаем над этим, в вашем случае можно кастомизировать компонент и отключить эти две строки, если на вашем проекте это не актуально.
23.01.2015 14:48:36
Думаю что как всегда виновата универсальность!
23.01.2015 15:09:58
фасетный индекс ускоряет только выдачу элементов, или подсчет найденных в умном фильтре тоже ?
24.01.2015 10:45:16
хмм. даже не знаю что и сказать.
вроде бы и функционал был заявлен ещё в середине осени (кажется, октябрь), обещали выпустить СТАБИЛЬНУЮ версию до конца ноября, но эта версия вышла только в конце января. Ок, но одно непонятно — почему всё ещё глючит.
Установил обновления — часть товаров в умном фильтре вообще пропала, где-то не видны свойства. Перечитал статью, перепроверил, не работает. Уже устал писать в техподдержку, но придётся опять.
24.01.2015 18:21:41
Почему не все инфоблоки попали в диалог создания фасетного индекса?
http://s018.radikal.ru/i510/1501/f0/a65a9d82c3c6.png
25.01.2015 12:55:12
Скорее всего, потому что в инфоблоке «Торговые предложения» у Вас нет свойств, которые показываются в умном фильтре.
28.01.2015 11:08:12
Нет, в данном инфоблоке есть свойства, которые выводятся в умном фильтре.
28.01.2015 11:46:24
Проверила, у меня тоже инфоблок с торговыми предложениями содержит одно свойство, отображаемое в умном фильтре, однако в фасетном индексе проиндексирован только сам каталог, инфоблока торговых предложений нет!
28.01.2015 12:53:18
Индексация выполняется в ручную, вы могли выбрать индексацию только основное инфоблока. Либо в инфоблок торговых предложений добавлялись свойства, после такой операции, переиндексацию необходимо выполнить заново.
28.01.2015 14:09:38
Юрий, инфоблок торговых предложений давным давно содержит свойства, которые отображаются в умном фильтре, ничего нового после индексации туда не добавлялись. Но инфоблок с торговыми предложениями уперто не хочет появляться в списке фасетных индексов. Что делать?
И почему ответ техподдержки идет вразрез с написанным и показанным тут видео?
28.01.2015 16:17:59
Такая же ситуация. Инфолоки «Каталог» и «торговые предложения», свойства умного фильтра в этих инфоблоках появились задолго до появления фасетного индекса. Однако после обновления и появления фасетного индекса в него попал только один инфолок — каталог.
28.01.2015 20:02:49
Почему ответ техподдержки идет вразрез с этой статьей и видео, размещенным тут?
| С версии 15.0.3 модуля инфоблоков, вывод инфоблоков торговых предложений в списке убран |
Если это так, очень просим и рекомендуем в версии 15.0.5 вернуть возможность индексации для инфоблоков торговых предложений, которые содержат свойства, участвующие в умном фильтре.
27.01.2015 16:22:08
Я правильно понимаю что фасетный индекс ускоряет работу умного фильтра?
На каком объеме данных тестировалось? У нас например в секции 16 000 товаров. На обычном фильтре работает 150 секунд. Решит ли это нашу проблему.
27.01.2015 17:48:43
Для больших объемов данных и предполагалось. Попробуйте использовать новый фильтр, и если вас не затруднит дать время отработки на таком объеме, в сравнение с предыдущим, должно стать сильно лучше.
Хотя я считаю не оптимально делать каталог в котором на ветке уровня содержится 16 000 элементов (может как то их побить на подразделы), при большой посещаемости этакий ддос собственного магазина.
28.01.2015 09:06:43
. Перестал работать «Умный Фильтр» При го добавлении кроме двух кнопок больше ничего нет. Я говорю про оформление, все кривое и косячное, нет цветной рамки и такое ощущение что вообще CSS не подключен.
Редакция 15.0.6
28.01.2015 12:43:44
Проверьте выбранный шаблон. Может быть выбран не верный.
28.01.2015 12:46:59
Да какбы тут сложно ошибиться.
там 3 шаблона и не один не работает.
Такая проблема не только у меня, вот, целый топик http://dev.1c-bitrix.ru/community/forums/forum6/topic69477/
28.01.2015 12:51:50
Обратитесь в техническую поддержку пожалуйста, топик хорошо, но проблему нужно локализовать и исправить, заранее спасибо!
28.01.2015 17:47:33
Исправление этой проблемы выйдет в обновлении iblock 15.0.5. При необходимости получить это исправление можно обратиться в ТП. Основной причиной является то, что фасетный индекс сейчас не может работать без указания раздела. Индекс будет доработан, но несколько позже.
05.02.2015 14:05:03
Свойства для каждого раздела не отображаются, стоит обновление iblock 15.0.5. Можно задать свойства на весь каталог, которые отображаются во всех разделах, но нельзя задать свои свойства на каждый раздел. Как решить эту проблему, до обновлений все работало прекрасно.
07.02.2015 18:58:50
Тоже интересен этот вопрос.
29.01.2015 17:37:22
Подскажите, планируется ли возможность предустановленных настроек фильтра.
Например, свойство чекбокс «Не показывать снятые с производства» по умолчанию включено. Траффик по товара ещё идет, по этому из каталога товары не удалишь, но в наличие нет, по этому основной массе покупателей показывать этот товар смысла нет.
Или например, свойство «Показывать товар»
В Наличии — по умолчанию, показываются товары в наличие в интернет магазине
Есть в Магазине — при необходимости можно посмотреть товары которые есть в офлайн магазинах
Любой — все товары
(Как реализовано в ситилинке)
10.02.2015 23:46:17
Написал ниже. Реализуется небольшой правкой компонента. По сути, это тоже самое, что я предлагаю.
30.01.2015 12:08:01
Разработчики, откликнитесь, объясните пожалуйста. Почему на данный момент вывод инфоблока с ТП для индексации невозможен. А в данной статье и в видео приложенной к ней все это показано, как красиво работает. Дальше, хуже. После обращения в техподдержку, получил ответ, что «создание фасеты для инфоблоков с ТП пока нет.» . Зачем тогда это декларировать, если это всего нет и это не работает?
10.02.2015 23:43:54
На данный момент в фильтре есть большая недоработка. Он не учитывает параметры фильтра уже наложенного на раздел. Т.е. в разделе какие-то элементы по фильтру в коде не показываются. А их параметры в умном фильтре показываются.
Решается только переделкой компонента умного фильтра, то есть добавлением нужных параметров фильтрации в $arElementFilter в компоненте. Нужно либо автоматом брать значения фильтра уже установленного для раздела, либо дать возможность в параметрах передавать массив с дополнительным фильтром.
13.02.2015 12:28:43
- Почему если товара нет в таблице b_iblock_%IBLOCK_ID%_index , то он ВООБЩЕ пропадает из отображения на сайте, хотя я ищу его не через поиск, а напрямую пройдя в нужную категорию?
- Чем заполняется поле FACET_ID в таблице b_iblock_%IBLOCK_ID%_index ? Для него нет нигде соответствий.
- Откуда берётся VALUE и VALUE_NUM? Если это ссылка на что-то из b_iblock_element_property.`VALUE` , то VALUE_NUM не заполняется, но откуда берутся значения в остальных случаях, в частности для цены и валюты? Ведь нет справочника соответствий.
- Чем заполняется поле INCLUDE_SUBSECTIONS? Сейчас я вижу что оно 0 для всех категорий кроме категорий нижнего уровня и только там оно = 1. Это признак категории нижнего уровня?
- Возможно ли сделать переиндексацию по «Рабочий стол -> Настройки -> Поиск -> Переиндексация» или каждый раз руками пересоздавать индекс?
08.03.2015 22:31:20
2. Если FACET_ID ссылается на свойство, то в поле пишется код свойства * 2
3. В зависимости от типа свойства в этих полях разные значения (может быть ссылка на код значения, либо ссылка на строку таблицы *_val)
Вообще по фасетному поиску был доклад Максима Смирнова на конференции партнёрской — http://video.1c-bitrix.ru/conf_winter2015/video/1/bighall/fasety.flv там эти вопросы в какой-то части освещались.
22.03.2015 05:59:16
1. Потому что разработчики решили в INNER JOIN запроса CIblockElement::getList добавить ! на эту таблицу
INNER JOIN b_iblock_11_index FC on FC.ELEMENT_ID = BE.ID
в принудительном порядке в buildQuery
как итог: часть товаров никак не обзаведется индексом, хотя у всего инфоблока ! назначены фасетные индексы, и никак фасетные индексы выключить не возможно. Единственный вариант передать принудительно в getList через arrFilter ‘Active’=>’N’
Но я вас обрадую еще больше! Товары пропадают не только из поиска. Они еще из секций (компонент catalog.section) пропали.
Активные товары. Которые были раньше на сайте. Взяли и пропали.
Выхода из ситуации пока нашел 2:
1. фильтр с «ACTIVE» => «», «ACTIVE» => «N»
2. Таблица b_iblock, ищем нужный инфоблок, в нем находим PROPERTY_INDEX, убираем значение Y, (оставляем пустым) сохраняем.
После этого механизм фасетов отключается для данного инфоблока. Повторить нужное количество раз.
Проверено на версии 15.0.6.
16.02.2015 19:02:32
Метод CIBlockElement::Update стал автоматически, безальтернативно, обновлять этот индекс для элемента. Из-за этого время исполнения метода подскочило с тысячных долей секунды до секунды-полторы. в тысячу раз. импорт/апдейт каталога в 30000 товаров вместо 10 минут стал занимать часы. это вы считаете нормальным стабильным релизом?
16.02.2015 20:13:52
Добрый день! Для массовых операций в ближайших обновлениях будет оптимизация по производительности.
16.02.2015 20:58:06
А до «ближайших обновлений» как обычно 2-12 месяцев? Ну вот как можно выпустить продукт, которым пользуются тысячи людей, у сотен из которых. если не у тысяч, громадные каталоги и не подумать об оптимизации производительности? Все ухищрения, типа быстрого сайта или композита, коту под хвост, поскольку актуализация каталога тупо встала. Ладно я могу сам закомментировать этот злосчастный вызов в модуле, а другим? Нанимать программистов и тратить деньги? Хорошая у вас забота о клиентах и продумывание наперед.
22.04.2015 21:33:36
Добрый день. Что-то нет обновлений для массовых операций. Подскажите, когда их ожидать?
Обычный CIBlockElement::Update сильно вешает систему.
27.02.2015 11:48:32
«Няшный» фасетный поиск это когда кешируется ключ-значение
«строка значения свойств» => строка «список id товаров»
да?
вы это в таблице кешируете и выборка по ключу быстро отрабатывает при большом числе записей?
кеширование в файл думаю не реально, будет 1000000 файлов.
03.03.2015 13:40:13
В каталоге более 70 тыс. товаров. Запустили первый раз индексацию. Процесс прошел, написал 100%. Обработано 34 тыс. записей.
Половина товаров на сайте из каталога пропала. В чем проблема?
22.03.2015 04:42:35
Подтверждаю. Не все товары «обзавелись» фасетными индексами. При этом в новых разделах добавляются новые товары, а индексы для инфоблока не заводятся. Да целыми разделами не добавились в итоге в таблице b_iblock_[id]_index разделы отсутствуют. Вы представляете, что целые разделы благодаря этому нововведению после обновления битрикса выпали нахрен. Уважаемые разработчики, это как так? Сейчас версия битрикса 15.0.6. Возможности ВЫКЛЮЧИТЬ индексы НЕТ, Вы жестко привязали КОД к фасетным индексам еще при сборке JOIN запросов. Компонент catalog.section больше себя нормально не ведет. Вопрос частично можно решить, если модифицировать сам компонент, грубо говоря сделать
unset($arFilter['ACTIVE'])
CIBlockElement::GetList(
и только тогда будет игнорироваться глючный фасетный индекс, который создает целые не рабочие разделы (товары хоть добавляй, хоть обновляй, хоть создавай новые разделы, без толку, они не просто не отображаются в «умном фильтре», но и пропадают из листинга разделов, если стоит активный фильтр товаров ‘ACTIVE’=>’Y’
Мужики, вы чего? Бажный код помещать в листинг обновлений и объявлять это «фичей». Вас заочно уже 2-3 недели проклинают.
22.03.2015 05:01:24
Итак, проблема: целые ! разделы магазина «пропали» после обновления и появления «фичи» с фасетными индексами.
Преамбула: имеем информационный блок iblock id 11. Щелкнули волшебную кнопку, которая добавила фасетные индексы. При добавлении новых разделов в инфоблок (и АКТИВНЫХ товаров в этот раздел) компонент bitrix:catalog.section выводит пустые списки именно на новых разделах. Соответствующие фасетные индексы для таблицы b_iblock_11_index при создании элементов не добавляются.
Решение: кушайте, не обляпайтесь, или фасетные индексы НЕ ВОЗМОЖНО отключить. Потому что бажный код был включен ! прямо в «комбайн» запросов JOIN для выборки CiblockElement::GetList. Чтобы товары, которые «пропали» из-за того, что им не назначены фасетные индексы, появились, остается только финт ушами (добавить в фильтр ‘ACTIVE’=>'» или же ‘ACTIVE’=>»N»;).
В итоге bitrix для раздела с id 66, созданного штатными средствами битрикса, содержащего 34 активных товара, находящегося в инфоблоке с фасетными индексами с id 11 формирует следующий запрос к базе данных:
и возвращает 0 элементов! 0 элементов !
а при установке в фильтре флага ‘ACTIVE’=>» (это единственный метод «избежать» join ! на фасетные индексы!
34 элемента (естественно ! что у всех элементов флаг ACTIVE = ‘Y’ в панели управления ! )
(но у таких разделов умный фильтр «пропадает»)
Bitrix 15.0.6. Малый бизнес.
Жду решения этой проблемы. Благодаря навязанным фасетным индексам теперь приходится выбирать: или отказаться от деактивации товаров на сайте, так как это единственный способ на сегодня отрубить эти бажные фасетные индексы, или же ! отказаться от добавления новых разделов и потерять часть товаров, которые при добавлении/обновлении штатными средствами почему — то «пробегают лесом» мимо связанных таблиц фасетных индексов.
Это вообще как понимать? Вредительство и саботаж.
Фасетный индекс битрикс что это
Текущую редакцию Вашего 1С-Битрикс можно просмотреть на странице Обновление платформы ( Marketplace > Обновление платформы ).
Ограничений нет
О фасетном поиске
До недавнего времени в интернет-магазинах использовался полнотекстовый поиск товаров Полнотекстовый поиск — поиск по слову или фразе. . С версии 15.0.1 модуля Информационные блоки стал доступен механизм фасетного поиска. Он интегрирован с компонентом Компонент – это программный код, оформленный в визуальную оболочку, выполняющий определённую функцию какого-либо модуля по выводу данных в Публичной части. Мы можем вставлять этот блок кода на страницы сайта без непосредственного написания кода. Подробнее. Умный фильтр Компонент подготавливает фильтр для выборки из инфоблока и выводит форму фильтра для фильтрации элементов.
Фасетный поиск — поиск товара по нескольким характеристикам: цвету, размеру, объему памяти, цене и т.п. Внешне он реализован как набор фильтров. Каждый фильтр связан только с одним свойством товара. Значения фильтра — все возможные значения свойства. В отличие от полнотекстового поиска фасетный фильтр отображается, как правило, только на страницах каталога.

Как работают фасетные фильтры
Фильтр отбирает сами товары и варианты выбора в других фильтрах. Немного сложно звучит, но вы поймёте из пояснений ниже.
С фильтрацией товаров всё просто. Если выбрано:
- одно значение, то отображаются товары, точно совпадающие с этим значением. (Например: все платья.)
- несколько значений в одном фильтре, то отображаются товары, совпадающие хотя бы с одним из значений. (Например, все изделия размеров 46, 48 и 50.)
- значения в нескольких фильтрах, то отображаются товары, совпадающие со значением из каждого фильтра. (Например, все платья зелёного цвета 48-го размера по цене от 2000 до 5600 рублей.)
Фильтрация вариантов выбора в других фильтрах существенно облегчает пользователю дальнейший выбор, показывая в специальном окне, сколько осталось товаров при заданных условиях фильтра:

Благодаря этому покупатель может оставить в поиске только нужные ему товары по любому из критериев. Например, оставить все шлифовальные машины брендов Bosсh или Вихрь. Индикация в отдельном окне оставшихся вариантов позволяет в любой момент остановить поиск или изменить его параметры.
Видеоурок
Как настроить фасетный поиск
Создадим фасетные индексы за несколько простых действий:
-
Настройте/проверьте отображение в умном фильтре хотя бы одного свойства каталога товаров. Без этого работа фасетного поиска невозможна На странице Контент > Инфоблоки > Фасетные индексы будет недоступно создание фасетных индексов для такого каталога. .
Как проверить, показывается ли свойство в умном фильтре (2 способа)
1 способ
Откройте страницу Магазин > [Название_каталога] > Настройки каталога , закладка Свойства элементов. В столбце Показать в умном фильтре свойства отмечены галочкой:

2 способ

Откройте страницу Контент > Инфоблоки > Типы инфоблоков > [Название_каталога] , закладка Свойства. В строке свойства нажмите кнопку и в форме редактирования свойства проверьте поле Показывать в умном фильтре:

. Откроется форма для создания индексов.
:
- Информационный блок — укажите конкретный каталог товаров или (все) В этом случае создадутся индексы для всех каталогов системы. .
- Шаг — задайте интервал Можно использовать значение по умолчанию. Учтите, что слишком маленький шаг существенно нагружает систему, если элементов очень много, а большой шаг — удлиняет процесс создания индексов. одного шага создания индекса в секундах.
.
Примечание: Создание индексов занимает продолжительное время, если в каталоге сотни тысяч товаров. Рекомендуется выполнять индексацию в период минимальной нагрузки на сервер.

Нужно ли пересоздавать фасетные индексы?
Фасетные индексы пересоздаются автоматически или требуется пересоздать их вручную в зависимости от произведенных действий:
Система подскажет о необходимости вручную пересоздать фасетные индексы с помощью сообщения вверху страниц административного раздела:

Примечание: До версии 20.5.0 модуля Информационные блоки при добавлении новых или редактировании разделов каталога требуется пересоздание фасетных индексов вручную.
Заключение
Фасетный поиск улучшает работу каталога товаров. Для его использования необходимо:
- Создать фасетные индексы для каталога с товарами;
- Следить за оповещением о необходимости пересоздания индексов вручную.
