У меня небольшая проблема с быстрым поиском Magento. Когда я ищу в поле, скажу:
ice machine
Тогда все будет retuernd, где он имеет ice
или machine
в названии. Мне нужно, чтобы он просто искал продукты с помощью точной струйной ice machine
в названии.
Я узнал, что если я поставлю "ice machine"
с двойными речевыми знаками, он вернет только имена продуктов, которые точно соответствуют этому.
Поэтому мне нужен способ, чтобы двойные речевые метки добавлялись вокруг поискового запроса automaticlly, поэтому он будет искать полный текст не в обоих словах отдельно.
Есть ли способ сделать это в форме HTML?
Эта проблема часто рассматривается на форумах MagentoCommerce. Логика поиска Like была изменена с AND на OR. Чтобы он дал лучшие результаты, его нужно изменить обратно на И, поэтому все элементы в поисковом запросе должны совпадать.
Поисковая логика
В app / code / core / Mage / CatalogSearch / Model / Mysql4 / Fulltext.php найдите класс public function prepareResult($object, $queryText, $query)
Следующий фрагмент кода:
if ($like) { $likeCond = '(' . join(' OR ', $like) . ')'; }
должно быть
if ($like) { $likeCond = '(' . join(' AND ', $like) . ')'; }
Создайте свой собственный модуль перезаписи, чтобы перезаписать только этот класс или выполнить переопределение, скопировав весь файл Fulltext.php на app / code / local / Mage / CatalogSearch / Model / Mysql4 / Fulltext.php и изменив OR на AND . Модуль предпочтительнее.
Используя форму, вы можете сделать это с помощью javascript, но вам придется следить за тем, входит ли клиент в двойные кавычки.
Мое предложение состояло в Mage_CatalogSearch_Helper_Data
чтобы переписать помощник Mage_CatalogSearch_Helper_Data
и переопределить метод getQueryText()
. Там вы можете процитировать существующие кавычки и добавить свои собственные цитаты вокруг запроса.