Перейти к содержимому


Фотография
- - - - -

Поиск не ищет !!!!


Лучший Ответ SmetDenis , 09 January 2017 - 08:39

Тогда замените всю функцию на эту

    protected function _getWhere($value, $exact = 0)
    {
        if (!is_array($value)) {
            $value = array($value);
        }

        $where = array();
        foreach ($value as $valueOne) {
            if ((int)$exact) {
                $where[] = 'tItem.name = ' . $this->_db->quote($valueOne);
            } else {
                $valueOne = $this->_prepareValue($valueOne);
                $where[]  = $this->_buildLikeBySpaces($valueOne, 'tItem.name');
            }
        }

        return $where;
    }
Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 8

#1 PlanB

PlanB

Отправлено 29 December 2016 - 13:12

Здравствуйте!

 

сайт - http://masloved.com

 

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

На настройках модуля Тип поиска "Полнотекстовый"

Например по запросу "15W-40" результатов - 0. А масел таких много.
http://masloved.com/...an-cargo-15w-40- например...

 

 

 

Как это можно поправить?

 

 


  • 0

#2 alexmixaylov

alexmixaylov

Отправлено 29 December 2016 - 13:47

логика поиска - ИЛИ

Зависимость от категории - НЕТ

 

Проверьте


  • 0

#3 PlanB

PlanB

Отправлено 29 December 2016 - 20:16

логика поиска - ИЛИ

Зависимость от категории - НЕТ

 

Проверьте

 

да, так и есть


  • 0

#4 PlanB

PlanB

Отправлено 30 December 2016 - 20:02

кстати вот по запросу "o 15W-40" результаты есть


  • 0

#5 Ёшкин Кот

Ёшкин Кот

Отправлено 30 December 2016 - 20:49

    AND tItem.searchable = '1' 
    AND tItem.type = 'katalog' 
    AND tItem.application_id = '2' 
    AND (
        (
            tItem.name LIKE '%т%' 
            AND tItem.name LIKE '%117%'
        )
    ) 

Так происходит запрос к базе данных если запрос "т 117"

    AND tItem.searchable = '1' 
    AND tItem.type = 'katalog' 
    AND tItem.application_id = '2' 
    AND (tItem.id = 117) 

А так, если просто "117" 

То есть он просто ищет по ID а не по имени... Вот и выходит 0 результатов. Вопрос - где собака порылась?


  • 0

#6 SmetDenis

SmetDenis

Отправлено 09 January 2017 - 08:14

Собака порылась тут

media\zoo\applications\jbuniversal\framework\models\jbmodel.element.itemname.php
scfj_200x0.png

Если это распознается как число, то будет искать по ID (легаси)
Иначе по названию.


Попробуйте выделенную строку заменить на
if (is_numeric($valueOne)) {

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#7 PlanB

PlanB

Отправлено 09 January 2017 - 08:25

Спасибо, помогло. Вот только правда только частично.

10w-40 ищет, а вот просто 10 или просто 40 нет.

 

Просто есть сайт, где поиск нужен исключительно по цифрам. Там заголовок - это по сути артикул. Так вот там поиск не работает вообще.

http://brillsd.ru/poisk/

 

есть например товар с заголовком "Арт 117", вот его по запросу "117" найти не получается


Сообщение отредактировал PlanB: 09 January 2017 - 08:28

  • 0

#8 SmetDenis

SmetDenis

Отправлено 09 January 2017 - 08:39   Лучший Ответ

Тогда замените всю функцию на эту

    protected function _getWhere($value, $exact = 0)
    {
        if (!is_array($value)) {
            $value = array($value);
        }

        $where = array();
        foreach ($value as $valueOne) {
            if ((int)$exact) {
                $where[] = 'tItem.name = ' . $this->_db->quote($valueOne);
            } else {
                $valueOne = $this->_prepareValue($valueOne);
                $where[]  = $this->_buildLikeBySpaces($valueOne, 'tItem.name');
            }
        }

        return $where;
    }

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#9 PlanB

PlanB

Отправлено 09 January 2017 - 08:42

Отлично! То что надо!

Спасибо!


  • 0




Click to return to top of page in style!