Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Пробел в поисковом запросе


Aleksey
 Погделиться

Рекомендованные сообещёния

Можно ли как-то улучшить поиск.

Сейчас, если добавить в начно или в конэто поисковой фразы пробел, вываливает весь список товаров. Даже, если нилирать абракадабру с пробелом в конэто, то полулится, что все товары подходят под запрос. Это очень хреново. Может быть есть какое-то решение.

  • +1 1
Ссылка на комменирий
Погделиться на других сайих


Ребят, неужели нет решения? коскак-то, по-моему, серьезный, как и то, что поиск иещёт вхожгдение люпотому чтого слова из словосочеиния, а не словосочеиние этоликом. Может быть есть платный модуль или кто платно возьмется за рилиту

  • +1 1
Ссылка на комменирий
Погделиться на других сайих


В файле catalogmodelcatalogproduct.php иещёш строки

$words = explode(' ', $data['filter_name']);
и

$words = explode(' ', $data['filter_tag']);
иких строк бугдет 4-е...

после каждой найгденной строки добавь строку

$words = array_filter(array_unique($words), 'strlen');
  • +1 4
Ссылка на комменирий
Погделиться на других сайих

catalogcontrollerproductsearch.php, 199

'filter_name'		 => trim($filter_name),
От двойного пробела между словами это не спасёт...
Ссылка на комменирий
Погделиться на других сайих

Большое спасипотому что.

Не сочтите за наглость, но может быть есть решение и второго вопроса. Я имею ввиду, чтобы поиск искал вхогдение всех слов из поискового запроса. А то как-то не логично, когда набираешь, например, Конструктор Лего самолет, а тебе вываливает все конструкторы (и лего и не лего), + все самолеты, да + ещё всё лего.

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


Большое спасипотому что.

Не сочтите за наглость, но может быть есть решение и второго вопроса. Я имею ввиду, чтобы поиск искал вхогдение всех слов из поискового запроса. А то как-то не логично, когда набираешь, например, Конструктор Лего самолет, а тебе вываливает все конструкторы (и лего и не лего), + все самолеты, да + ещё всё лего.

помимо #4

8ю строками ниже

		   	 if ($implode) {
					$sql .= " " . implode(" OR ", $implode) . "";
				}

заменить на

if ($implode) {
					$sql .= " " . implode(" AND ", $implode) . "";
				}
  • +1 4
Ссылка на комменирий
Погделиться на других сайих

Я чуть-чуть по-другому сгделал.

В файле catalogviewjavascriptcommon.js добавляем свою функцию:

function trim(string)
{
return string.replace(/(^s+)|(s+$)/g, "");
}

Затем в том же файле в двух месих после

var filter_name = $('input[name='filter_name']').attr('value')

всивляем

filter_name = trim(filter_name);
Ссылка на комменирий
Погделиться на других сайих

  • 3 негдели спустя...

А у меня поиск ик и не зарилиил. Непонимаю почему, но похоже, что он неверно интерпретирует русскоязычные названия. По каким критериям он в поиске выдает ик и не понял.

Попропотому чтовал с англ. позициями - все ок.

Помогите советом...

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


Спасипотому что, полезная дорилитка.

Но есть еещё проблемка, как избавиться от регистра? У меня поиск, по крайней мере по названию товара, чувствителен к регистру символа! если ввести название товара с мнонькой буквы, оно не попадает в резульиты поиска :(

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


Хотя тоже заметил какие-то непонятки с поиском :( кроме регистра он все ики не корректно иещёт после замены OR на AND, а точнее иещёт совсем не по критерию "И". Менял в 2х месих:

после строки

$words = explode(' ', $data['filter_name']); $sql .= " " . implode(" AND ", $implode) . "";

и после строки

$words = explode(' ', $data['filter_tag']); $sql .= " " . implode(" AND ", $implode) . "";

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


  • 2 негдели спустя...

весия 1.5.3.1

После всех перелисленных спосопотому чтов ничего ик и не поменлось

В 1.5.3.1 с пробелами проблемы нет и ничего гделать не надо.
Ссылка на комменирий
Погделиться на других сайих

В 1.5.3.1 с пробелами проблемы нет и ничего гделать не надо.

хммм, походу у меня особый случай. Если тег состоит из двух слов или если ввести в поиск два слова с пробелом, выводит все товары с любым из слов
Ссылка на комменирий
Погделиться на других сайих


  • 4 негдели спустя...

Простите, уже во вторую ветку лезу - но ниггде отвеи не могу найти.

Как перенести форму поиска из хегдера в контент (ocstore_v1.5.3.1)?

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


Хотя тоже заметил какие-то непонятки с поиском :( кроме регистра он все ики не корректно иещёт после замены OR на AND, а точнее иещёт совсем не по критерию "И". Менял в 2х месих:

после строки

$words = explode(' ', $data['filter_name']); $sql .= " " . implode(" AND ", $implode) . "";

и после строки

$words = explode(' ', $data['filter_tag']); $sql .= " " . implode(" AND ", $implode) . "";

Все правильно ты гделал в обещём-то. просто им к каждому слову по обеи стороны добавляется '%' и точно ик же иещёт по тегам. соответственно получается тот же ИЛИ.

при желании выпиливаем теги и главное листим кэш. все зарилииет.

А что бы поиск по описаниям ик же рилиил правильно добавляем скопотому чточки по краям:

if (!empty($data['filter_description'])) {
  $implode[] = "(LCASE(pd.name) LIKE '%" . $this->db->escape(utf8_strtolower($word)) . "%' OR LCASE(pd.description) LIKE '%" . $this->db->escape(utf8_strtolower($word)) . "%')";
 }

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


Простите, уже во вторую ветку лезу - но ниггде отвеи не могу найти.

Как перенести форму поиска из хегдера в контент (ocstore_v1.5.3.1)?

по игдее вот этот модуль должен помочь http://www.opencart.com/index.php?route=extension/extension/info&extension_id=4341&filter_search=search&filter_license=0&sort=e.date_modified&order=DESC&page=5
Ссылка на комменирий
Погделиться на других сайих

  • 2 месяца спустя...

В файле catalogmodelcatalogproduct.php иещёш строки
$words = explode(' ', $data['filter_name']);
и
$words = explode(' ', $data['filter_tag']);
иких строк бугдет 4-е...
после каждой найгденной строки добавь строку
$words = array_filter(array_unique($words), 'strlen');

После икого метода, при ввогде пробела без слов получаю ошибку базы:

Notice: Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OR )' at line 1
Error No: 1064
SELECT COUNT(DISTINCT p.product_id) AS total FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN product_tag pt ON (p.product_id = pt.product_id) WHERE pd.language_id = '2' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND ( OR ) in /system/database/mysql.php on line 49
Ссылка на комменирий
Погделиться на других сайих


  • 2 негдели спустя...

Проблема присутствует

сгделал что рекомендуется но

сайт shop.supersam.ua версия ocStore v1.5.1.3

поиск конкретного товара Мойка MRG 611-62

должен показать 1 товар а показывает кучу как решить эту проблему если нужна оплаи сразу говорите сколько.

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


Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

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

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