Tras la actualización de versión de PHP de nuestros servidores algunas tiendas prestashop en la versión 1.4 han visto como su buscador ha dejado de funcionar correctamente.

Para solucionar esta incidencia se debe actualizar Prestashop a la versión 1.5 o aplicar este parche:

En el fichero classes/Search.php debemos quitar o comentar el siguiente código:

 foreach ($words AS $key => $word)
if (!empty($word) AND strlen($word) >= (int)Configuration::get(‘PS_SEARCH_MINWORDLEN’))
{
$word = str_replace(‘%’, ‘\\%’, $word);
$word = str_replace(‘_’, ‘\\_’, $word);
$intersectArray[] = ‘SELECT id_product
FROM ‘._DB_PREFIX_.’search_word sw
LEFT JOIN ‘._DB_PREFIX_.’search_index si ON sw.id_word = si.id_word
WHERE sw.id_lang = ‘.(int)$id_lang.’
AND sw.word LIKE
‘.($word[0] == ‘-‘
? ‘ \».pSQL(Tools::substr($word, 1, PS_SEARCH_MAX_WORD_LENGTH)).’%\»
: ‘\».pSQL(Tools::substr($word, 0, PS_SEARCH_MAX_WORD_LENGTH)).’%\»
);
if ($word[0] != ‘-‘)
$scoreArray[] = ‘sw.word LIKE \».pSQL(Tools::substr($word, 0, PS_SEARCH_MAX_WORD_LENGTH)).’%\»;
}
else
unset($words[$key]);

Y en su lugar incluir este otro:

$intersectArray[] = ‘SELECT distinct p.id_product FROM ps_product p LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product AND pl.id_lang = ‘.(int)$id_lang.’) WHERE pl.name LIKE \’%’.pSQL($expr).’%\»;

Con esto debe estar solucionado el problema.