База знаний

19.01.2016

Проблема

Как сделать так, чтобы поиск искал не целое слово, а только часть?

Решение

Если нужно, чтобы поиск был по вхождению слова, а не по всему слову, нужно изменить в файле modules/search/search.model.php строку 66:

$keys = DB::query_fetch_key_value("SELECT id, keyword FROM {search_keywords} WHERE keyword IN ('".implode("', '", $search_words)."')", "keyword", "id");

на:

$keys = DB::query_fetch_key_value("SELECT id, keyword FROM {search_keywords} WHERE keyword LIKE '%".implode("%' OR keyword LIKE '%", $search_words)."%'", "keyword", "id");

Строку 79:

foreach ($search_words as $k => $key)

на:

foreach ($keys as $key => $k)

Поиск будет работать при снятой в настройках модуля опции "Искать все слова сразу".