Найти записи, содержащие поисковые слова, это еще не всё – при выводе нужно как-то выделить эти слова. Для этого в дескриптор нужно добавить параметр highlight (см. код)
songs.tdd
<?php
    $titles[1] = 'Имя исполнителя';
    $titles[2] = 'Название песни';
    $types[1] = 'varchar(255)';
    $types[2] = 'varchar(255)';
    $params['multi-record'] = true;
    $params['search']['highlight'] = true;
?>
Единственное, что надо иметь в виду, что после добавления параметра highlight, найденные слова будут автоматически обрамлены кодом  <span class='blox-searchword'>...</span>.
А это означает, что в таблице стилей нужно задать класс blox-searchword, для найденных слов, например, с такими свойствами:
songs.css
span.blox-searchword {background:yellow; font-weight:inherit}
Теперь в результатах поиска поисковые слова будут выделяться.
В методе, описанном выше, на шаблон поступают данные уже с дополнительным кодом, выделяющим найденные слова. Но бывают случаи, когда в шаблоне нужно иметь данные в чистом виде без лишних тегов. Или, например, к тексту в предобработчике применялась php-функция strip_tags(), которая убирает все теги.
В этом случае найденные слова можно выделить отдельно с помощью php-функции preg_replace(). При этом, в качестве параметров можно взять готовые переменные шаблона, а именно: массив паттернов и массив текстов для замены, соответственно, $request['search']['patterns'] и $request['search']['replacements'] (см. данные запроса). В следующем примере показано, как с помощью этих массивов вывести данные одного поля с выделенными поисковыми словами:
.tpl
<?php
    $request = Request::get($block);
    echo preg_replace($request['search']['patterns'][1], $request['search']['replacements'][1], $dat[1]);
?>
<?php
    $request = Request::get($block);
    foreach ($request['search']['words'] as $field => $words)
    {
        foreach ($words as $word)
        {
            # В значении поля ищется вхождение поискового слова (без учета регистра)
            $patterns[$field][] = "/($word)/iu";
            # Найденное слово заменяется на само себя с тегами для выделения
            $replacements[$field][] = '<b>$1</b>';
        }
    }
?>
Имейте в виду, в случае поиска фрагментов в начале слов, паттерн будет немного другим.