Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.

Форум Модули DIAFAN.CMS Поиск по сайту Поиск по артикулу или коду товара


Дмитрий (putnik) 519 февраля 2018 г.

Приветствую форумчане!

Подскажите если кто нибудь сталкивался как реализовать на сайте логику поиска таким образом чтобы если полный артикул вводишь, то полное совпадение, так как деталей с таким артикулом больше нет (но соответственно если 2 детали с таким артикулом, то он 2 выдает). Если часть артикула вводим, то он показывает детали у которых совпадает эта часть артикула, а остальные цифры разные.

Сейчас если забиваем точное соответствие ( например артикул 2111-3705010/57.3705 ) в выдаче куча товаров, а если только чать ( первые 4 цифры артикула 2111 ) то находит только 3 товара.
Сайт тут

nik.nichegoneskazhu (nik.nichegoneskazhu) 2520 февраля 2018 г.

Ну, про полное совпадение - я б запрос в БД тупо давал. Наверное. Дальше If (не помогло) {обычный поиск}. В моем смутном понимании. Хотя, скорее всего, есть более человеческие варианты.

Дмитрий (putnik) 520 февраля 2018 г.

Вот их то я и ищу...

AJ (aphexenizer) 320 февраля 2018 г.

Бегло если, то похоже, что ваша проблема возникает из-за того, что в артикулах присутствуют недопустимые символы, которые идут на замену после прогона через регулярку..
Посмотрите класс includes/Searchwords: 61
Код
$text = preg_replace('/\s+|[\.,:;\"\'\/\\!\?\(\)\-]/u', ' ', $text);



Ваш запрос вида "2111-3705010/57.3705" на выходе выглядит следующим образом: "2111 3705010 57 3705"

Дмитрий (putnik) 520 февраля 2018 г.

К сожалению манипуляции с этой строкой не к чему не привели

AJ (aphexenizer) 320 февраля 2018 г.

Выставите параметр "Искать часть слова" и почистите индекс у модуля магазин в настройках Поиска.

Во вложениях скрины посмотрите, может я не так понял..

В каталоге у меня два товара, жирным выделена идентичная часть
Поисковый запрос - "2111-3705010/57.3705" - выведет уникальный товар
Поисковый запрос - "2111-370501" - выведет оба товара

Дмитрий (putnik) 520 февраля 2018 г.

При точном совпадении ищет кучу товара

AJ (aphexenizer) 320 февраля 2018 г.

На скрине "товар" test2 имеет артикул 2111-3705010/57.3705
Поисковый запрос - "2111-3705010/57.3705"
Совпадение точнее некуда..
Закоментированная (грубо ради теста) 61-ая строка дает нужный результат

Буквально пол часа назад проверял, 6.0.6.7 версия

Дмитрий (putnik) 520 февраля 2018 г., редакция 20 февраля 2018 г.

http://prntscr.com/iha9wy Закоментированная строка

http://prntscr.com/ihaahl Результат поиска

AJ (aphexenizer) 320 февраля 2018 г.

)))
а переиндексировали повторно?

AJ (aphexenizer) 320 февраля 2018 г.

ваш запрос(сверху) var_dump-ом выведен, после регулярки, т.е. как было

AJ (aphexenizer) 320 февраля 2018 г.

запрос без прогона через регулярку +вывод в тело документа совпавшего 1-1 товара

Дмитрий (putnik) 520 февраля 2018 г.

Всё ишет, но!
Берем артикул ‎3302-3501800, все ищет хорошо, но если убрать переднюю часть артикула и оставить ‎3501800, то ничего не находит. И если в поиск вбить колодки газель некст, то вместе с колодками выдает еще 1006 позиций содержащие слова газель и некст.

AJ (aphexenizer) 320 февраля 2018 г., редакция 20 февраля 2018 г.

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

AJ (aphexenizer) 320 февраля 2018 г.

но, боюсь, что подобного рода фичи должны быть реализованы на уровне всей системы..
т.к. даже если и был исключен символ дефис из правил, то строка после обработки типографом будет содержать уже не сам символ, а мнемонику –, которую придется сперва найти, потом обратно перевести в символ и происходить это все будет не в одном месте..
итп итд