Rebuild Search Index - проблемы
-
- phpBB 1.0.0
- Сообщения: 5
- Стаж: 20 лет 2 месяца
-
- phpBB 2.0.6
- Сообщения: 518
- Стаж: 20 лет 5 месяцев
Xpert, это нужно делать для версии форума выше 2.0.6 ?
Jovani писал(а):Раз гуру забыло о проблеме, сообщаю, что ее можно решить так:
найти в моде этозаменить этим:Код: Выделить всё
while (($row = $db->sql_fetchrow ($result)) && (onTime () == true)) { add_search_words('single', $row['post_id'], stripslashes($row['post_text']), stripslashes($row['post_subject'])); $num_rows++; }
Код: Выделить всё
while (($row = $db->sql_fetchrow ($result))/* && (onTime () == true)*/) { add_search_words('single', $row['post_id'], stripslashes($row['post_text']), stripslashes($row['post_subject'])); $num_rows++; }
-
- phpBB Guru
- Сообщения: 5484
- Стаж: 21 год 1 месяц
- Поблагодарили: 2 раза
-
- phpBB 1.0.0
- Сообщения: 5
- Стаж: 20 лет 2 месяца
-
- phpBB 2.0.6
- Сообщения: 518
- Стаж: 20 лет 5 месяцев
Xpert, я к сожалению так и не понял одного момента: если это требуется выполнять для мода, в случаии его установки на форум версии выше 2.0.8, то почему же в инструкции по установке мода ничего об этом не сказано?
2. Если я произведу такую замену в файле admin_rebuild_search.php, то после запуска мода у меня не рухнут (очистятся) таблицы поисковые?
Версия форума у меня выше 2.0.8...
2. Если я произведу такую замену в файле admin_rebuild_search.php, то после запуска мода у меня не рухнут (очистятся) таблицы поисковые?
Версия форума у меня выше 2.0.8...
-
- phpBB Guru
- Сообщения: 5484
- Стаж: 21 год 1 месяц
- Поблагодарили: 2 раза
-
- phpBB 1.4.2
- Сообщения: 53
- Стаж: 20 лет 4 месяца
- Откуда: Орёл
-
- phpBB 2.0.6
- Сообщения: 518
- Стаж: 20 лет 5 месяцев
Профессор, что бы востановить таблице придется это сделать в моде:
найти в моде это
Код: Выделить всё
while (($row = $db->sql_fetchrow ($result)) && (onTime () == true)) { add_search_words('single', $row['post_id'], stripslashes($row['post_text']), stripslashes($row['post_subject'])); $num_rows++; }
заменить этим:
Код: Выделить всё
while (($row = $db->sql_fetchrow ($result))/* && (onTime () == true)*/) { add_search_words('single', $row['post_id'], stripslashes($row['post_text']), stripslashes($row['post_subject'])); $num_rows++; }
-
- phpBB 1.4.2
- Сообщения: 53
- Стаж: 20 лет 4 месяца
- Откуда: Орёл
-
- phpBB 1.4.2
- Сообщения: 53
- Стаж: 20 лет 4 месяца
- Откуда: Орёл
-
- phpBB 1.4.4
- Сообщения: 104
- Стаж: 20 лет 2 месяца
-
- phpBB Guru
- Сообщения: 5484
- Стаж: 21 год 1 месяц
- Поблагодарили: 2 раза
Что-то я плохо понял, как у вас размер изменился. 
При переиндексации размер увеличивается, а не уменьшается. В отдельных случаях, при изменениях параметров занесения данных в таблицы, вес может измениться и в меньшую сторону.
includes/functions_search.php
Тут настраивается длина слов, которые заносятся в таблицы.

При переиндексации размер увеличивается, а не уменьшается. В отдельных случаях, при изменениях параметров занесения данных в таблицы, вес может измениться и в меньшую сторону.
includes/functions_search.php
Код: Выделить всё
// 'words' that consist of <3 or >20 characters are removed.
$entry = preg_replace('/[ ]([\S]{1,2}|[\S]{21,})[ ]/',' ', $entry);
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
-
- phpBB 1.0.0
- Сообщения: 1
- Стаж: 20 лет 1 месяц
В регулярном выражении:
ошибка. Если через него пропустить строку "до ре ми фа" на выходе будет строка "ре фа". Сответственно таблица phpbb_search_wordlist будет забиваться. Я просто вернул код из phpBB 2.0.5, который работает как часы.
для тех у кого проблемы с strtolower с русскими буквами (на нашем сервере такие проблемы имеют место) я предлагаю добавить в functions_search.php
и заменить 2 вызова strtolower на strtolowerr.
Ну и не забыть добавить в lang_main.php:
Код: Выделить всё
$entry = preg_replace('/[ ]([\S]{1,2}|[\S]{21,})[ ]/',' ', $entry);
Код: Выделить всё
$entry = explode(' ', $entry);
for ($i = 0; $i < sizeof($entry); $i++)
{
$entry[$i] = trim($entry[$i]);
if ((strlen($entry[$i]) < 3) || (strlen($entry[$i]) > 20))
{
$entry[$i] = '';
}
}
$entry = implode(' ', $entry);
Код: Выделить всё
function strtolowerr($string)
{
return strtolower( strtr( $string,"АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ","абвгдеёжзийклмнопрстуфхцчшщъыьэюя" ));
}
Ну и не забыть добавить в lang_main.php:
Код: Выделить всё
setlocale(LC_ALL, "ru_RU.cp1251");
$lang['ENCODING'] = "windows-1251";