Помощь Помогите разобраться в многоуровневой навигации, фильтрах и поиске.

Byteman

Мой дом здесь!
Регистрация
18 Мар 2008
Сообщения
487
Реакции
242
Здравствуйте!
Помогите разобраться в многоуровневой навигации, фильтрах и поиске.

Может кто-то популярно разъяснить что есть что, как одно от другого отличается или как одно с другим связано?
Если нельзя своими словами, то хотя бы ссылки для чайников.

В первую очередь меня интересует поиск.
На данный момент на сайте нет сторонних модулей и поиск выдаёт всякую белиберду.
Например, если я ввожу в поиск автора "Луиза Хей" (тётенька пишет такие книги как "Исцели себя сам" и прочую белиберду для незнающих чем себя занять легковерных дамочек),
а поиск выдаёт такие книги как "Основы электронного бизнеса", "Невеста Наполеона" и множество прочей белиберды, не относящейся к теме поиска.

Это из-за несовершенства родного престашоповского поиска или из-за неправильной настройки?
Если из-за неправильной настройки, то подскажите что именно, где и как настраивать, либо опять же, помогите ссылками на материалы,
где популярно и без лишней воды подаётся разъясняется тема.

И наконец, просьба порекомендовать модули, которые улучшают поиск.

Много пишется о модуле Advanced Search.
Поставил его на тестовой престе 1.7.2.4.
Глянул в настройки и понял, что там нужно немало времени, чтобы разобраться что к чему.
Может есть и другие модули, которые также дают хорошие результаты, но попроще в настройках?

Буду рад любым советам и думаю, что аналогичные вопросы возникают не только у меня.
Заранее спасибо.
 
не

тут дело просто в том, как преста формирует запрос на выборку из БД

1) т.е. по дефолту преста разбирает введённую фразу на слова и ищет слова только по OR (для решения достаточно поправить код запроса с OR на AND)

2) то же самое: преста перегоняет любые нелатинские символы сначала в латиницу (в латинице и хранит поисковые индексные слова) и потом уже по латинице ищет (для решения нужно найти, где именно "ё" превращается в "yo" и заменить "yo" на "e")

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

Я тут вот еще чего подумал: мне встречалась на некоторых продвинутых сайтах одна хитрая мулька. Например, набираем "Пугачов" или "Пугочефф", и оно предлагает нормальные варианты. Эластик вроде умел такие кунштюки, но уж больно он монструозен.
 
Есть OR'ы, ниже в тексте :)
Всё равно мне кажется, нужно проверить collation и кодировку БД и таблицы.

Единственный OR в этом файле в этом фрагменте:

$score = '';
if (is_array($score_array) && !empty($score_array)) {
$score = ',(
SELECT SUM(weight)
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 si.id_product = p.id_product
AND ('.implode(' OR ', $score_array).')
) position';

но эта строчка имеет отношение к выводу данных в стринги, но не собственно к поиску, если я правильно понимаю?
То есть тут замена OR на AND не поможет.

Что касается collation и кодировки БД:

upload_2018-8-7_15-22-42.png

upload_2018-8-7_15-20-46.png
 
Вывод - юзать сторонний поиск, не такой странный :)

Какой именно? Чтобы эти проблемы были решены в нём и не создавал других проблем и не был головоломным в настройках.
А местные эксперты тут неоднократно высказывались, что родной поиск неплохой и не стоит перегружать престу дополнительными модулями.
 
Я тут вот еще чего подумал: мне встречалась на некоторых продвинутых сайтах одна хитрая мулька. Например, набираем "Пугачов" или "Пугочефф", и оно предлагает нормальные варианты. Эластик вроде умел такие кунштюки, но уж больно он монструозен.
в престе по дефолту тоже такая штука есть на странице настройки поиска
там где пример "blouse" "bluose" и т.д.
но если базу данных вариантов ошибочных написаний достать и залить - боюсь, что скорость работы понизится, поэтому целесообразность под вопросом
 
Круто работает поиск! Ищем "Водка и Сталин", оно сперва ищет "vodka%", потом "stalin%" в алиасах, потом в поисковых словах, а потом запрос с LIKE "vodka%" OR LIKE "stalin%" . Отсюда делаем вывод - будет показывать всё вперемешку.
Однако, @_sashok указал верное направление - alias'ы/псевдонимы. В этом случае скорее всего поиск даже ускорится, так как обращение к этой таблице идёт в первую очередь и может сократить число дальнейших выборок. И да, вбиваешь алиас на русском, он конвертится в транслит. Но если в слове есть например мягкий знак, то в запросе будет что-то вроде того: "мальчик" превратится в "malьchik". Интересно, мускуль корректно найдёт такое слово?
 
Да, для начала хотя бы поиск по целой фразе наладить. Мне интересно, это только у меня такая проблема?
Все остальные такие грамотные и сами решили эту проблему, но подсказать конкретно где, что и как править никто не может?
 
Последнее редактирование:
Круто работает поиск! Ищем "Водка и Сталин", оно сперва ищет "vodka%", потом "stalin%" в алиасах, потом в поисковых словах, а потом запрос с LIKE "vodka%" OR LIKE "stalin%" . Отсюда делаем вывод - будет показывать всё вперемешку.
Именно так и происходит.
И что же, большинство такие магазины ведёт и не видит в этом проблемы и не решает её никак?
 
Однако, @_sashok указал верное направление - alias'ы/псевдонимы. В этом случае скорее всего поиск даже ускорится, так как обращение к этой таблице идёт в первую очередь и может сократить число дальнейших выборок. И да, вбиваешь алиас на русском, он конвертится в транслит. Но если в слове есть например мягкий знак, то в запросе будет что-то вроде того: "мальчик" превратится в "malьchik". Интересно, мускуль корректно найдёт такое слово?
Причём тут альясы в случае необходимости поиска по целой фразе?
Да и для различения между е и ё тоже это плохой помощник: где я возьму базу альясов с написанием е и ё, да и какова величина базы будет? Нет - это совсем не то.
 
Назад
Сверху