нужен поиск по сайту с минимальной длиной запроса в 3 буквы (для слов Бук, Дуб Вяз и т.д.)
Всем привет!
Помоги пожалуйста с вопросом.
Сейчас, в версии 2.15.2 — минимальный поиск по 4 буквам или цифрам, как я понимаю, так как не ищет по 3 буквам или цифрам, а по 4-м — ищет.
Как уменьшить хотя бы до 3-х символов поиск?
Есть файл system\controllers\search\model.php вроде как оно
// Узнаём минимальное кол-во символов для поиска // ft_min_word_len для MyISAM, если у вас таблицы InnoDB, то замените на innodb_ft_min_token_size $var_value = $this->db->getSqlVariableValue('ft_min_word_len'); if($var_value < 3){ $this->three_symbol_search = true; }
DeeMon, а у вас какая версия?
У меня вроде как таких строк совсем там нет...
Но и стоят везде 3, четверок нет.
Но ищет именно по 4-м.
DeeMon, а у вас какая версия?
это код с последней, более 3х символов
Да, точно, в папке другого сайта смотрел...
Ну у меня тоже 3 стоит, но почему то не ищет.
Поставил 2, результат тот же....
В режиме отладки вот что пишет:
Fatal error: Uncaught Error: Call to a member function setQuery() on null in /home/c/cx70732/duxi/public_html/system/controllers/search/actions/index.php:36 Stack trace: #0 /home/c/cx70732/duxi/public_html/system/core/controller.php(665): actionSearchIndex->run() #1 /home/c/cx70732/duxi/public_html/system/core/controller.php(536): cmsController->runExternalAction('index', Array) #2 /home/c/cx70732/duxi/public_html/system/core/controller.php(512): cmsController->executeAction('index', Array) #3 /home/c/cx70732/duxi/public_html/system/core/core.php(763): cmsController->runAction('index', Array) #4 /home/c/cx70732/duxi/public_html/index.php(47): cmsCore->runController() #5 {main} thrown in /home/c/cx70732/duxi/public_html/system/controllers/search/actions/index.php on line 36
public_html/system/controllers/search/actions/index.php on line 36:
if (!$query || !$this->model->setQuery($query)) {
Вот что в 36 строке прописано.
зависит от версии mysql, где то об этом тут писали
Александр, Mysql сервер: 5.6.39 — такая версия.
Версия PHP: 7.2.31, apache2handler
// Узнаём минимальное кол-во символов для поиска
// ft_min_word_len для MyISAM, если у вас таблицы InnoDB, то замените на innodb_ft_min_token_size
$var_value = $this->db->getSqlVariableValue('ft_min_word_len');
if($var_value < 3){
$this->three_symbol_search = true;
}
Попыткался изменить на innodb_ft_min_token_size, результата нет.
Не надо трогать эту строку. Там выше есть
if (mb_strlen($query) === 3) {
в ней поменяйте
Lora, что поменять?
3 на 2 ?
Не ищет все равно по 3 цифрам и буквам.
Может еще какие-то варианты есть?
Это видимо я затупил… Исправил, перезалил файл и все хорошо.
Fatal error: Uncaught Error: Call to a member function setQuery() on null in /home/c/cx70732/duxi/public_html/system/controllers/search/actions/index.php:36 Stack trace: #0 /home/c/cx70732/duxi/public_html/system/core/controller.php(665): actionSearchIndex->run() #1 /home/c/cx70732/duxi/public_html/system/core/controller.php(536): cmsController->runExternalAction('index', Array) #2 /home/c/cx70732/duxi/public_html/system/core/controller.php(512): cmsController->executeAction('index', Array) #3 /home/c/cx70732/duxi/public_html/system/core/core.php(763): cmsController->runAction('index', Array) #4 /home/c/cx70732/duxi/public_html/index.php(47): cmsCore->runController() #5 {main} thrown in /home/c/cx70732/duxi/public_html/system/controllers/search/actions/index.php on line 36
Не ищет все равно по 3 цифрам и буквам.
Искать то ищет. Не находит, это уже другой вопрос)
Значит поставьте в этой строке
if($var_value < 3){
вместо 3 пять, а там так двойку и оставьте
Проверил. Что то находит)
Lora, есть страница на сайте 2040 название.
в поиск вбиваю 204 — нет результата, вбивая 2040 — результат есть.
На старой версии инстанта 2.13.2 — ищет по 3 символам.
Значит поставьте в этой строке
if($var_value < 3){
вместо 3 пять, а там так двойку и оставьте
Это сделали?
Работать то должно, но вроде это не совсем айс. Что то там с полнотекстовыми индексами вроде делать надо по феншую.
Это сделали?
Работать то должно, но вроде это не совсем айс. Что то там с полнотекстовыми индексами вроде делать надо по феншую.
Да, сделал, не ищет что-то...
По цифрам не знаю, а по двум буквам у меня что то выдал. Сейчас проверю ещё.