На index.php с вызовом компонента search.page
1. В параметр компонента FILTER_NAME пишешь например
"FILTER_NAME" => "searchFilter"
2. Перед вызовом компонента, добавляешь код
$itemIds = [];
// здесь укажи ИД своего инфоблока (или массив инфоблоков)
$iblockId = 1;
// здесь значение из get (я наугад написал filial)
$filial = $_GET['filial'];
$iterator = \CIBlockElement::GetList([], ['IBLOCK_ID' => $iblockId, 'PROPERTY_FILIAL' => $filial], false, false, ['ID']);
while($row = $iterator->Fetch()) {
$itemIds[] = $row['ID'];
}
$GLOBALS['searchFilter'] = ['ITEM_ID' => $itemIds];
Все, теперь в $arResult['SEARCH'] уже будут отфильтрованные элементы, дальше уже можешь в result_modifier доставать дополнительные поля, желательно не делать запросы в цикле.
Также желательно код выше закешировать, пример как это сделать можно посмотреть в файле /bitrix/components/bitrix/catalog/templates/bootstrap_v4/section.php