Не зарегистрирован
Вход
Забыли пароль?
Регистрация
Подписаться
Сэкономьте время — перед вопросом на форуме узнайте, как найти ответ быстрее
По техническим проблемам необходимо обращаться в Консультационный центр

Поиск по форуму: 

Приглашаем в блог Amiro.CMS. Регулярные обзоры, опыт, решения, практикумы.
Форум  ->   Любые вопросы от новичков  ->  Как улучшить поиск по каталогу?


Показать все сообщения в этой ветке


Добавлено: 05.10.15 10:26:26  



Регистрация: 22.10.12
Сообщений: 73


Обратиться по имени

Начиная с седьмой версии CMS, при посторении поискового индекса модуля генерируется событие on_search_index.

Пример использования -
AMI_Event::addHandler('on_search_index', 'cstOnSearchIndex', 'eshop_item');

function cstOnSearchIndex($name, array $aEvent, $handlerModId, $srcModId){
    $aSearch = array_keys($aEvent['aReplacement']);
    $aReplace = array_values($aEvent['aReplacement']);
    $index = array_search('/[^a-zа-ялёА-ЯЛЁ0-9\.,&-]/u', $aSearch);
    if(FALSE !== $index){
        $aSearch[$index] = '/[^a-zа-ялёА-ЯЛЁ0-9\.,&-\/]/u';
        $aEvent['aReplacement'] = array_combine($aSearch, $aReplace);
    }

    return $aEvent;
}

Содержимое $aEvent -
string sourceContent  Source item content
string &content       Prepared item content
array &aReplacement   Array of replacements for preg_replace

Как вариант решения задачи, добавить в "aReplacement" регулярное выражение, которое будет разбивать фразы нужным образом.

Уточним, что поисковый индекс модуля можно будет быстро перегенерировать в разделе "Обслуживание", вкладка "Сервис", действие "Исправить хэши поиска", доступно с 7.0.



3


Создать новую тему Ответить