Radimirich

Неправильная выдача поиска

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

Radimirich    0

Здравствуйте. Проблема с поиском. Ситуация такая: 

Есть магазин по продаже деталей. В названиях преобладают числа. Например 113620, 233620, 3620 Л, 3620 Г.

Когда в поиск вбиваю например 3620 выдает сначала 113620 потом 23620(а наименовании много) и  только в конце 3620.

А мне нужно чтобы 3620 был в начале. Как это можно это реализовать? 

 

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


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

Явно - никак

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


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

Не может быть такого, релевантность чисел же присутствует. Значит можно где то это прописать. Помогите пожалуйста

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


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

поэтому и говорю - явно - никак.

 

все сводится к конструкции

%фраза%

 

Можно свести к конструкции

фраза%

%фраза%

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


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

Копай функцию getProducts() в классе ModelCatalogProduct.

Нужно создать SQL-запрос, который выдаст массив товаров с именами, НАЧИНАЮЩИМИСЯ с искомой строки.

Потом к этому массиву добавить массив $product_data[], "родной" для функции. Он выдает товары, у которых имя ПОХОЖЕ (LIKE) на искомую строку.

Исключить дубли.

Вернуть объединенный массив. В нем 3620 будет в начале.

Похоже, для первого запроса достаточно удалить начальный % в строке "pd.name LIKE '%" . $this->db->escape($word) . "%'" (как и предлагает chukcha)

Как-то так...

Изменено пользователем igon

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


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

Попробуйте склонировать метод getProduct() для поиска  и в нем:

ORDER BY name=0, -name DESC, name

Утянуто отсюда

 

По моему может вам помочь.

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


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

Копай функцию getProducts() в классе ModelCatalogProduct.

Нужно создать SQL-запрос, который выдаст массив товаров с именами, НАЧИНАЮЩИМИСЯ с искомой строки.

Потом к этому массиву добавить массив $product_data[], "родной" для функции. Он выдает товары, у которых имя ПОХОЖЕ (LIKE) на искомую строку.

Исключить дубли.

Вернуть объединенный массив. В нем 3620 будет в начале.

Похоже, для первого запроса достаточно удалить начальный % в строке "pd.name LIKE '%" . $this->db->escape($word) . "%'" (как и предлагает chukcha)

Как-то так...

 

Извините я не силен в этом, это все в контроллере search.php нужно править?

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


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

поэтому и говорю - явно - никак.

 

все сводится к конструкции

%фраза%

 

Можно свести к конструкции

фраза%

%фраза%

Сначала в селекте должно быть "=", потом "строка%", потом "%строка", потом "%строка%" - как-то так.

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


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

Извините я не силен в этом, это все в контроллере search.php нужно править?

Нет, в Model/Catalog/product.php

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


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

Сначала в селекте должно быть "=", потом "строка%", потом "%строка", потом "%строка%" - как-то так.

Как карта ляжет, все зависит от формируемого алгоритма оптимизации

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


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

Спасибо всем за отзывчивость, буду пробовать, потом отпишусь :-)

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


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

Сначала в селекте должно быть "=", потом "строка%", потом "%строка", потом "%строка%" - как-то так.

 

Как карта ляжет, все зависит от формируемого алгоритма оптимизации

 

Условие "=", ИМХО, избыточно - юзеру вряд ли захочется вбивать имя продукта полностью.

 

Условие "%строка" тоже избыточно - его полностью перекрывает "%строка%".

 

ОДИН select с двумя (тремя???) LIKE? Ну да, тут от расклада карт может многое зависеть.

 

 А вот ДВА относительно простых селекта с одним LIKE в каждом и объединением results в PHP - самое, ИМХО, то!

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


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

Условие "=", ИМХО, избыточно - юзеру вряд ли захочется вбивать имя продукта полностью.

 

Условие "%строка" тоже избыточно - его полностью перекрывает "%строка%".

 

ОДИН select с двумя (тремя???) LIKE? Ну да, тут от расклада карт может многое зависеть.

 

 А вот ДВА относительно простых селекта с одним LIKE в каждом и объединением results в PHP - самое, ИМХО, то!

Все зависит от товаров. Зачастую важны именно детали.

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


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

Все зависит от товаров. Зачастую важны именно детали.

Согласен. Но ТС не модуль же пишет. Зачем здесь универсальность? 

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


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

Согласен. Но ТС не модуль же пишет. Зачем здесь универсальность? 

Ну ему дали полный набор необходимых форматов выборки, подсказали, как его укоротить, при необходимости. А дальше уже сам выберет.

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


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

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

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

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

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

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

Войти

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

Войти


  • Похожий контент

    • От alexsoftdev

      1 499.00 руб
      Скачать/Купить дополнение


      SOFORP Умный Поиск
      Стандартный поиск в опенкарте очень примитивный .. Хотелось бы умный поиск.
      Компания SOFORP решила данный вопрос, с помощью модуля Умный Поиск посетителям интернет магазина будет гораздо удобнее найти интересующий их товар.
      В данном дополнении от компании SOFORP модуль Умный Поиск для OpenCart.
      Поиск осуществляется по названию, артиклу, производителю и модели товаров.
      Возможности:
      Умный релевантный поиск Настройки поиска из админ. Системы Нет нагрузки на базу данных при каждом запросе Высокая скорость поиска Поисковая выдача с дополнительными параметрами: (Цена, Изображение товара, Рейтинг товара.)  
      Инструкция:
      Установка на примере опенкарт 2.Х ( для остальных смотрим инструкции внутри архива ):
      Запросите ключ лицензии по email license@neoseo.com.ua, при этом указав:
          - название сайта, на котором вы купили модуль. Например opencartforum.com
          - ваш ник на этом сайте, например, alexsoftdev
          - номер заказа на этом сайте, например 355446
          - основной домен сайта для активации лицензии, например lamoda.ru
          - тестовый домен сайта для разработки, например lamoda.neoseo.com.ua
      Распакуйте и загрузите ключ в корень сайта, рядом с robots.txt
      Если у вас правильно настроен и подключен ftp, то
      3.1. Установите архив целиком через Дополнения \ Установка расширений.
      Если же опенкарт настроен криво, то делаем это вручную:
      3.1. Распакуйте архив с модулем и загрузите содержимое папки upload на сайт
      3.2. В архиве есть файл install.xml, его переименовываете в install.ocmod.xml
           и загружаете через Дополнения \ Установка расширений
      Нажмите кнопку "Обновить" на страничке "Дополнения \ Модификаторы".
      Установите модуль посредством меню Дополнения \ Модули
      Установите права на просмотр модуля нужным пользователям
      Зайдите в настройки модуля и выберите нужный вам шлюз, указав параметры подключения и нажмите сохранить.
      Обновление:
      Удалите модификатор Повторите установку Лицензия:
      на ОДИН домен. Не на сайт, не на человека, не на студию. У вас несколько доменов подключены к одному сайту - значит вам нужно несколько лицензий. на использование ( допускается установка клиентам при покупке лицензий под них ), но не на перепродажу. правообладателем лицензии и обновлений на продукт является владелец домена Модули от SOFORP это:
      Безупречное качество Дружественный интерфейс Богатая функциональность Высокое быстродействие Оперативная поддержка Посмотреть работу модуля вы сможете тут:
      https://shop.neoseo.com.ua/admin/
      логин: admin
      пароль: admin
       
      Рекомендуем:
      Также рекомендуем вам купить другие наши продукты, которые пригодятся в абсолютно любом магазине
      Водный знак Резервная копия Ссылка на товар Карта сайта Источник заказа Добавил alexsoftdev Добавлено 15.12.2015 Категория Поиск Системные требования PHP 5.3+ Сайт разработчика https://seomag.com.ua Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 2.1
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.4.1
      1.5.3.1 ocStore 2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1
      1.5.1.3 OpenCart.Pro, ocShop Opencart.pro 2.1
      OcShop 1.5.6.4.х  
    • От michnoff
      Приветствую! Как вывести категории на странице поиска, чтобы видеть в каких категориях лежит найденный товар в ocstore 2.3
      Нашел два варианта для 1.5.5.1.2 , попытался делать по аналогии, но ни чего не вышло
      http://webxeon.ru/opencart/cats
       
      Можно ли реализовать так же на 2.3? Заранее спасибо!
    • От bekeshin
      Всем привет. Столкнулся с такой проблемой, что при поиске ищет в описаниях тоже, а мне этого не нужно. В comon.js я не делал правки, то есть он дефолтный. Уже пересмотрел всё, что только можно. Подскажите пожалуйста куда копать.
      Версия OC 2.3.0.2 (rs.1)
      Из модулей установленных для поиска стоит Live Ajax Search, но даже без него работает так же само
    • От Nannco
      Ребята, подскажите после оформления заказа и поиска товара на сайте получаю вот такую ошибку 
      Скриншот
      <b>Notice</b>: Underfined variable: button_back in <b>/hsphere/local/hazard/localuser.ru/system/storege/modification/view/theme/next_default/template/product/search.tpl</b> on line <b>15</b> Что это может быть? Как вылечить?
    • От 960px
      ОС 2.3, при выводе товара в поиске (модуль "Поиск с морфологией и релевантностью") результат скрывается при подгрузке кнопки "Показать ещё" (модуль ajax). Хотелось бы починить, желательно оперативно.
  • Последние посетители   0 пользователей онлайн

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