Вход • Регистрация

Сортировка товаров в поиске по сайту

  • 27 июня 2017 г.
  • Возникло несколько вопросов:
    1. Как происходит сортировка товаров в выдаче поиска по сайту?
    2. Можно ли как-то ее изменить?
    3. Как настроить, чтобы поиск производился только по названию товара и определенным характеристикам, без учета краткого и полного описания товара?
    • 27 июня 2017 г.
    • В файле modules/shop/shop.search.php есть такое:


      Цитата
      'shop' => array(
      'fields' => array('name', 'param', 'anons', 'text', 'article'),
      'rating' => 6
      ),


      Соответственно
      name - название товара
      param -параметры
      anons - анонс и т.д.

      Удалив лишнее, вы можете оставить только то, что нужно.

      Что касается сортировки, то не могу подсказать. Скорее всего где-то тут же копать нужно.
  • 27 июня 2017 г.
  • В файле "modules/search/search.model.php" нашел вот такой код:
    Код

    $where = "INNER JOIN {search_index} AS i ON r.id=i.result_id AND i.keyword_id IN ('".implode("', '", $keys)."')";
    if(count($search_words) > 1)
    {
    $temp_table = true;
    DB::query("CREATE TEMPORARY TABLE {search_temp} (
    keyword_id int(11) unsigned NOT NULL DEFAULT '0',
    rating tinyint(2) unsigned NOT NULL DEFAULT '0'
    );");
    $where .= " INNER JOIN {search_temp} AS t ON t.keyword_id=i.keyword_id";
    $query = '';
    if($this->diafan->configmodules("search_like", "search"))
    {
    foreach ($keys as $i => $word)
    {
    $query .= ($query ? "," : '')." (".$word.", ".(count($keys) - $i).")";
    }
    }
    else
    {
    foreach ($search_words as $i => $word)
    {
    $query .= ($query ? "," : '')." (".$keys[$word].", ".(count($search_words) - $i).")";
    }
    }
    DB::query("INSERT INTO {search_temp} (keyword_id, rating) VALUES".$query);
    }
    $order = ($temp_table ? "tmp_rating" : "r.rating")." DESC";


    Я так понимаю, что он записывает количество найденных совпадений во всех параметрах поиска и потом сортирует их в зависимости от количества совпадений. Получается, что ручная сортировка тут невозможна.
    • 27 июня 2017 г. , редакция: 27 июня 2017 г.
    • Хм интересно, а может поделитесь технологией сортировки заранее неизвестной выдачи запросов, как определить ручками позицию материала, который будет создан послезавтра для запросов: "природный", "материал", "мох" и "новатерм" и ещё 10 000 запросов?
      • 27 июня 2017 г.
      • Это не тот вопрос, о котором надо думать. Вариантов много, как обработать результирующий массив. Например, можно использовать функции обратного вызова (callback-функции), что позволит пользователю самостоятельно определить вес найденной позиции в массиве ответа.
        • 28 июня 2017 г.
        • Вот и я об этом же. Что выдача должна регулироваться согласно какого либо алгоритма а не ручками как это представляет себе автор.

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум