Jump to content

Recommended Posts

A pesquisa funciona muito bem excepto quando se tenta pesquisar por números da referência (SKU) por ex. se colocar 55.54323 ele encontra, se colocar só 54323 já não encontra... Assim como só encontra os termos certos na BD, por ex. se colocar lâmpada encontra, se colocar lâmpadas, já não encontra...

 

Há alguma forma de contornar isto?

Link to comment
Share on other sites

A pesquisa funciona muito bem excepto quando se tenta pesquisar por números da referência (SKU) por ex. se colocar 55.54323 ele encontra, se colocar só 54323 já não encontra... Assim como só encontra os termos certos na BD, por ex. se colocar lâmpada encontra, se colocar lâmpadas, já não encontra...

 

Há alguma forma de contornar isto?

 

Problema resolvido por consulta a outro tópico... Já agora e se alguém precisar aqui fica o código a alterar no ficheiro search.php (root/classes/) 

 

foreach ($words as $key => $word)

if (!empty($word) && strlen($word) >= (int)Configuration::get('PS_SEARCH_MINWORDLEN'))

{

$word = str_replace('%', '\\%', $word);

$word = str_replace('_', '\\_', $word);

$intersect_array[] = 'SELECT si.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.id_shop = '.$context->shop->id.'

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] != '-')

$score_array[] = 'sw.word LIKE \'%'.pSQL(Tools::substr($word, 0, PS_SEARCH_MAX_WORD_LENGTH)).'%\'';

}

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...