/** * Возвращает подготовленную для поиска likePlus строку * * @param string $query * @return string */ protected function prepareLikePlusString($query) { $config = ConfigLoader::byModule('search'); $dis = preg_split('//u', html_entity_decode($config['search_type_likeplus_ignore_symbols']), -1, PREG_SPLIT_NO_EMPTY); return str_replace($dis, ' ', mb_strtolower($query)); }
Уважаемые разработчики, подскажите, пожалуйста, почему замена идет на пробел, а не просто вырезается символ?
У меня с пробелом артикулы, маркировку не ищет. В поле indextext данные идут слитно, но при поиске тире, например, заменетс на пробел и поиск не работает.
Ставлюreturn str_replace($dis, '', mb_strtolower($query));
все замечательно работает
Суть опции - search_type_likeplus_ignore_symbols, указать символы, которые будут считаться разделителями слов. Поиск like+ все равно идет по всем словам.
Эта опция не должна формировать новые слова. В случае разделителя ''[пустая строка], Редискрипт будет заниматься формированием новых слов из кусочков других слов.
Плюсом является наглядность при просмотре базы, что и как там сформировалось.