генератором db_apdate файлов сделать?
Код: Выделить всё
TRUNCATE `phpbb_search_wordlist`;

это ничего что phpbb все русские слова пишет в верхнем регистре а мод индексирует в нижнем?
Код: Выделить всё
TRUNCATE `phpbb_search_wordlist`;
Код: Выделить всё
#-----[ OPEN ]------------------------------------------
#
includes/functions_search.php
#
#-----[ FIND ]------------------------------------------
#
$sql = "SELECT word_id, word_text
FROM " . SEARCH_WORD_TABLE . "
WHERE word_text IN ($word_text_sql)";
#
#-----[ BEFORE, ADD ]------------------------------------------
#
case 'mysql':
case 'mysql4':
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Код: Выделить всё
#
#-----[ OPEN ]------------------------------------------
#
includes/functions_search.php
#
#-----[ FIND ]------------------------------------------
#
static $drop_char_match = array('^', '$', '&', '(', ')', '<', '>', '`', '\'', '"', '|', ',', '@', '_', '?', '%', '-', '~', '+', '.', '[', ']', '{', '}', ':', '\\', '/', '=', '#', '\'', ';', '!');
static $drop_char_replace = array(' ', ' ', ' ', ' ', ' ', ' ', ' ', '', '', ' ', ' ', ' ', ' ', '', ' ', ' ', '', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' , ' ', ' ', ' ', ' ', ' ', ' ');
$entry = ' ' . strip_tags(strtolower($entry)) . ' ';
#
#-----[ REPLACE ]------------------------------------------
#
static $drop_char_match = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', "А", "Б", "В", "Г", "Д", "Е", "Ё", "ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я", '•', '^', '$', '&', '(', ')', '<', '>', '`', '\'', '"', '|', ',', '@', '_', '?', '%', '-', '~', '+', '.', '[', ']', '{', '}', ':', '\\', '/', '=', '#', '\'', ';', '!', "«", "»", "“", "”", "©", "№");
static $drop_char_replace = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', "а", "б", "в", "г", "д", "е", "е", "е", "ж", "з", "и", "и", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я", ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '', '', ' ', ' ', ' ', ' ', '', ' ', ' ', '', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' , ' ', ' ', ' ', ' ' , ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ');
$entry = ' ' . strip_tags($entry) . ' ';
#
#-----[ FIND ]------------------------------------------
#
$entry = preg_replace('/[ ]([\S]{1,2}|[\S]{21,})[ ]/',' ', $entry);
}
#
#-----[ REPLACE ]------------------------------------------
#
while (ereg('[[:space:]]+([[:alnum:]]{1,3}|[:alnum:]{21,})[[:space:]]+', $entry)) {
$entry = ereg_replace('[[:space:]]+([[:alnum:]]{1,3}|[:alnum:]{21,})[[:space:]]+',' ', $entry);
$entry = ereg_replace('[[:space:]]+',' ', $entry);
}
}
$entry = ereg_replace('[[:digit:]][[:alnum:]]{1,4}',' ', $entry);
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
мда... точно так и есть.Kir-Dagoor писал(а):Братцы, нашел ошибку в процедуре add_search_words
melnikaite писал(а):переиндексировал базу с помощбю reindex_mod
теперь при восстанавливании базы из бэкапа выдает кучу ошибок ERROR 1062: Duplicte entry '...' for key 1
Сделано тоже-самое и такие же ошибки. Предварительно были очищены таблицы: "phpbb_search_results", "phpbb_search_wordlist" и "search_wordmatch".melnikaite писал(а):кажется проблема в регистре символов
Вроде все правильно... Куда рыть-то?CREATE TABLE `phpbb_search_wordlist` (
`word_text` varchar(50) character set cp1251 collate cp1251_bin NOT NULL default '',
`word_id` mediumint(8) unsigned NOT NULL auto_increment,
`word_common` tinyint(1) unsigned NOT NULL default '0',
PRIMARY KEY (`word_text`),
KEY `word_id` (`word_id`),
FULLTEXT KEY `word_text` (`word_text`),
FULLTEXT KEY `word_text_2` (`word_text`),
FULLTEXT KEY `word_text_3` (`word_text`)
) ENGINE=MyISAM AUTO_INCREMENT=46172 DEFAULT CHARSET=cp1251;
По моему, это не справочка, а вопрос ...DedPichto писал(а):Разрешите справочку. Это если залить стоп-вордс и синонимы и запустить переиндексацию, размер базы в целом может в теории уменьшиться?
Можно простым языком пояснить - что это даст?Jovani писал(а):Может конечно я ошибаюсь, но попробуй перед переиндексацией, в functions_search.php
Изменить:
remove_common('single', 4/10, $word);
Скажем на:
remove_common('single', 1/30, $word);
А поделиться скриптом и способом его применения не можете?Jovani писал(а):вообще-то, у меня тоже были проблемы со временем переиндексации, и я ее проводил частями. То есть, был сделан скрипт и временно создана была дополнительная таблица, куда записывался ID последнего индексированного сообщения ...
Постепенно, за недельку, пока был в онлайн, я все переиндексировал.
Попробовал - быстро! Записей в таблицах чуть меньше, чем после reindex_mod. Для более глубокого сравнения результатов моих знаний недостаточно. Хотелось бы понять - в чем фишка, скорость - не в ущерб качеству?Jovani писал(а):Попробуй закинуть в корень и выполнить этот скрипт
Код: Выделить всё
if($posts_per_day > $total_posts)
{
$posts_per_day = $total_posts;
}
Код: Выделить всё
print_r($posts_per_day.' :: '.$total_posts);
if($posts_per_day > $total_posts)
{
$posts_per_day = $total_posts;
}
print_r($posts_per_day.' :: '.$total_posts);
Код: Выделить всё
if($posts_per_day > $total_posts)
{
$posts_per_day = $total_posts;
}
if($topics_per_day > $total_topics)
{
$topics_per_day = $total_topics;
}
if($users_per_day > $total_users)
{
$users_per_day = $total_users;
}
Код: Выделить всё
if(str_replace(',' ,'.' ,$posts_per_day) > $total_posts)
{
$posts_per_day = $total_posts;
}
if(str_replace(',' ,'.' ,$topics_per_day) > $total_topics)
{
$topics_per_day = $total_topics;
}
if(str_replace(',' ,'.' ,$users_per_day) > $total_users)
{
$users_per_day = $total_users;
}