Перейти к содержанию
Rashpil

Игнорирование знаков в поиске

Рекомендуемые сообщения

Добрый день. Подскажите, пожалуйста, как сделать игнорирование определенных знаков в поиске. Например, что бы фраза bull-dog и bulldog выдавала одинаковые результаты. 1.5.5.1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

$search - preg_replace('#[.,!?:…-+]#','',$search)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пробуйте в catalog\model\catalog\product.php найти

$implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'";

заменить на

$implode[] = "REPLACE (pd.name, '-', '') LIKE '%" . $this->db->escape($word) . "%'";

(встречается три раза)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как сделать по артикулу ? 

1113222 42212 24 - ищет 

11132224221224 - не ищет 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделал как написал AlexDW, проблему с "-" решил. Но появилась новая проблема после этого, товар Набор свингеров "Fishing ROI" SW02-4 не находит по фразе Fishing ROI SW02-4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

$implode[] = "REPLACE (pd.name, '-', '') LIKE '%" . $this->db->escape($word) . "%'";
>>

$implode[] = "REPLACE (pd.name, '-', '') LIKE '%" . $this->db->escape(str_replace('-', '', $word)) . "%'";

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
$implode[] = "REPLACE (pd.name, '-', '') LIKE '%" . $this->db->escape($word) . "%'";
>>

$implode[] = "REPLACE (pd.name, '-', '') LIKE '%" . $this->db->escape(str_replace('-', '', $word)) . "%'";

 

Так поиск вообще не работает. Выводит весь товар, и ошибка вверху 

Notice: Undefined variable: word in /vqmod/vqcache/vq2-catalog_model_catalog_product.php on line 490Notice: Undefined variable: words in /vqmod/vqcache/vq2-catalog_model_catalog_product.php on line 492Warning: Invalid argument supplied for foreach() in /vqmod/vqcache/vq2-catalog_model_catalog_product.php on line 492

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуйте

$implode[] = "REPLACE (pd.name, '-', '') LIKE '%" . str_replace('-', '', $this->db->escape($word)) . "%'";

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть подозрение, что vqmod что-то меняет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Попробуйте

$implode[] = "REPLACE (pd.name, '-', '') LIKE '%" . str_replace('-', '', $this->db->escape($word)) . "%'";

К сожалению, тоже ошибка и выводится весь товар

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пробуйте откатить до первого предложенного варианта и проверьте работоспособность. Если нет - возможно, в процессе правки что-то где-то затронули и причина в этом

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я прошу прощения! Перепробовал еще раз все сделать с начала - заработало. Большое спасибо! 

Не поможете еще решить одну проблему с поиском? У товара есть артикул j2105. Поиск "2105", "j210" ничего не выдает? Как это решить? Или тут поможет модуль "поиск с морфологией"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

артикул - это какое поле?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Артикул (SKU, код производителя):

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.