Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

Дизайн и модификация Invision Community

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

Важное с Sysman.Ru: Проблема с поиском в разных регистрах

Song:

Сиптомы:

Если в Админ-центре у вас установлен "обычный" поиск (не полнотекстовый) и база данных вашего форума создана в регистрозависимом чарсете (определить какой у вас, см. файл в конце статьи), вы можете испытывать проблемы с поиском.

 

Причина:

При поиске в файле search_mysql_man.php в запросе текст поста приводится к нижнему регистру:

[color=#048284]$title_like[/color] = " LOWER(t.title) LIKE '%".trim([color=#048284]$keywords[/color])."%' ";[color=#048284]$post_like[/color]  = " LOWER(p.post) LIKE '%".trim([color=#048284]$keywords[/color])."%' ";

 

Однако сама строка поиска остаётся в том регистре, в котором её задал пользователь. Т.е. например, если пользователь задал поиск "маша", то найдётся только "маша".

Ни "Маша", ни "МАША" не найдутся.

 

Исправление:

 

1-ый вариант: добавить выделенный ниже код:

Цитата (1.x)
[b]function[/b] do_main_search(){    [b]global[/b] [color=#048284]$ibforums[/color], [color=#048284]$DB[/color], [color=#048284]$std[/color], [color=#048284]$HTTP_POST_VARS[/color], [color=#048284]$print[/color];    [color=#048284]$ibforums[/color]->input['keywords'] = strtolower([color=#048284]$ibforums[/color]->input['keywords']);

Цитата (2.1.x)
[b]function[/b] do_main_search(){    [color=#048284]$this[/color]->ipsclass->input['keywords'] = strtolower([color=#048284]$this[/color]->ipsclass->input['keywords']);

 

2-ой вариант: поменять чарсет БД на регистронезависимый.

Собственно, если Вы смените чарсет на регистронезависимый можно вообще убрать LOWER из запросов выше, т.к. они не сказываются на результат, а только замедляют поиск.

 

Примечания:

 

1) Если после исправления в 1-ом варианте глюк всё ещё присутствует, воспользуйтесь этой статьёй: Самопроизвольное изменение регистра букв

 

2) Определить какой у вас чарсет можно из следующего справочного руководства phpMyAdmin (html файл):

 

Song_Bot: К посту прикреплены вложения, но посмотреть Вы их можете, только открыв статью в Форуме.

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

Song:

Сиптомы:

Если в Админ-центре у вас установлен "обычный" поиск (не полнотекстовый) и база данных вашего форума создана в регистрозависимом чарсете (определить какой у вас, см. файл в конце статьи), вы можете испытывать проблемы с поиском.

 

Причина:

При поиске в файле search_mysql_man.php в запросе текст поста приводится к нижнему регистру:

[color=#048284]$title_like[/color] = " LOWER(t.title) LIKE '%".trim([color=#048284]$keywords[/color])."%' ";[color=#048284]$post_like[/color]  = " LOWER(p.post) LIKE '%".trim([color=#048284]$keywords[/color])."%' ";

 

Однако сама строка поиска остаётся в том регистре, в котором её задал пользователь. Т.е. например, если пользователь задал поиск "маша", то найдётся только "маша".

Ни "Маша", ни "МАША" не найдутся.

 

Исправление:

 

1-ый вариант: добавить выделенный ниже код:

Цитата (1.x)
[b]function[/b] do_main_search(){    [b]global[/b] [color=#048284]$ibforums[/color], [color=#048284]$DB[/color], [color=#048284]$std[/color], [color=#048284]$HTTP_POST_VARS[/color], [color=#048284]$print[/color];    [color=#048284]$ibforums[/color]->input['keywords'] = strtolower([color=#048284]$ibforums[/color]->input['keywords']);

Цитата (2.1.x)
[b]function[/b] do_main_search(){    [color=#048284]$this[/color]->ipsclass->input['keywords'] = strtolower([color=#048284]$this[/color]->ipsclass->input['keywords']);

 

2-ой вариант: поменять чарсет БД на регистронезависимый.

Собственно, если Вы смените чарсет на регистронезависимый или у вас уже регистронезависимый (что в принципе в большинстве случаев) можно вообще убрать LOWER из запросов выше, т.к. они не сказываются на результат, а только замедляют поиск.

 

Примечания:

 

1) Если после исправления в 1-ом варианте глюк всё ещё присутствует, вам нужно поставить локаль для вашей кодировки, воспользуйтесь этой статьёй: Самопроизвольное изменение регистра букв

 

2) Определить какой у вас чарсет можно из следующего справочного руководства phpMyAdmin (html файл):

 

Song_Bot: К посту прикреплены вложения, но посмотреть Вы их можете, только открыв статью в Форуме.

Song:

Сиптомы:

Если в Админ-центре у вас установлен "обычный" поиск (не полнотекстовый) и база данных вашего форума создана в регистрозависимом чарсете (определить какой у вас, см. файл в конце статьи), вы можете испытывать проблемы с поиском.

 

Причина:

При поиске в файле search_mysql_man.php в запросе текст поста приводится к нижнему регистру:

[color=#048284]$title_like[/color] = " LOWER(t.title) LIKE '%".trim([color=#048284]$keywords[/color])."%' ";[color=#048284]$post_like[/color]  = " LOWER(p.post) LIKE '%".trim([color=#048284]$keywords[/color])."%' ";

 

Однако сама строка поиска остаётся в том регистре, в котором её задал пользователь. Т.е. например, если пользователь задал поиск "маша", то найдётся только "маша".

Ни "Маша", ни "МАША" не найдутся.

 

Исправление:

 

1-ый вариант: добавить выделенный ниже код:

Цитата (1.x)
[b]function[/b] do_main_search(){    [b]global[/b] [color=#048284]$ibforums[/color], [color=#048284]$DB[/color], [color=#048284]$std[/color], [color=#048284]$HTTP_POST_VARS[/color], [color=#048284]$print[/color];    [color=#048284]$ibforums[/color]->input['keywords'] = strtolower([color=#048284]$ibforums[/color]->input['keywords']);

Цитата (2.1.x)
[b]function[/b] do_main_search(){    [color=#048284]$this[/color]->ipsclass->input['keywords'] = strtolower([color=#048284]$this[/color]->ipsclass->input['keywords']);

 

2-ой вариант: поменять чарсет БД на регистронезависимый.

Собственно, если Вы смените чарсет на регистронезависимый или у вас уже регистронезависимый (что в принципе в большинстве случаев) можно вообще убрать LOWER из запросов выше, т.к. они не сказываются на результат, а только замедляют поиск.

 

Примечания:

 

1) Если после исправления в 1-ом варианте глюк всё ещё присутствует, вам нужно проставить локаль для вашей кодировки, воспользуйтесь этой статьёй: Самопроизвольное изменение регистра букв

 

2) Определить тип используемого у вас чарсета можно из следующего справочного руководства phpMyAdmin (html файл):

 

Song_Bot: К посту прикреплены вложения, но посмотреть Вы их можете, только открыв статью в Форуме.

Song: Также в порядке рекомендации упомяну, что на регистронезависимых чарсетах LOWER в запросах не нужен вообще.

Наоборот, при его наличии он действует губительно: применённый к индексному полю, он не даёт использовать этот индекс и, если запрос был расчитан на использование индекса, например, см.:

1.x:

Цитата (Login.php)
        [color=green]//-------------------------------------------------[/color]        [color=green]// Attempt to get the user details[/color]        [color=green]//-------------------------------------------------[/color]                [color=#048284]$DB[/color]->query("SELECT id, name, mgroup, password, ip_address FROM ibf_members WHERE LOWER(name)='$username'");

 

2.1.x:

Цитата (mysql_queries.php)
    [b]function[/b] general_get_by_display_name( [color=#048284]$a[/color] )    {        [b]return[/b] "SELECT id, members_display_name, name, email, mgroup, member_login_key, ip_address, login_anonymous                FROM ".SQL_PREFIX."members                WHERE LOWER(members_display_name)='{$a['members_display_name]}'";    }

 

то выборка будет через полный перебор таблицы (FULL SCAN), а не с использованием индекса (см. тему LOWER).

Гость
Эта тема закрыта для дальнейших сообщений.

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.