Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Спасибо за ссылку. Пойду проверю все по пунктам. Главное, что проблему локализовали.
Добавлено спустя 9 минут 31 секунду:
Не помогло. Причем дублируются не только русские слова, но и английские, а также цифры:
word_text word_id word_common
005 3257559 0
005 3257785 0
005 3257786 0
005 3257561 0
Последний раз редактировалось Admin_777 10.11.2005 16:38, всего редактировалось 1 раз.
SET NAMES cp1251;
SET collation_connection = 'cp1251_general_ci';
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Простите, не понял.
Это про config.php ?
У меня там сейчас вот что:
$dbms = 'mysql';
$mysql_charset = 'cp1251';
$collation_connection = 'cp1251_general_ci';
Да, имена пользователей сортируются по алфавиту нормально.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
В общем проблема найдена. При составлении таблиц для поиска в таблице search_wordlist на каждое(!) слово (русское, английское) или цифру заводится новая запись.
В результате такого дублирования начинает распухать сама таблица search_wordlist и это вызывает немеренный рост search_wordmatch (до нескольких десятков млн. записей).
Осталось выяснить к каком месте программы происходит проверка слов в поле word_text на совпадение и почему даже при наличии такого слова каждый раз создается новое.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Чтобы избежать влияние девайса "кривые руки", установил чистый 2.0.18 + Rebuild Search (тут думаю версия последнего не влияет, т.к. используются функции движка форума).
Пока все плохо. Те же млн. записей и повторы слов. Куда копать не знаю. Или все-таки Rebuild Search не так работает?
Самый прикол в том, что есть на этом хостинге еще один форум (временно замороженный), где стоит 15 версия и там с поисковыми словами все в порядке. Ничего не понимаю.
Отчего не срабатывает $check_words = array(); и т.д. ???
Разобрался в чем дело. Оказывается админ предыдущего нашего хостинга при восстановлении базы форума, не долго думая, сменил в таблице search_wordlist поле word_text на индексируемое поле (а должно быть первичным ключом), отчего значения внутри него перестали быть уникальными.
Теперь все работает. Продолжаю тюнить поиск.
Уважаемые модераторы, мои топики наверное лучше перенести в отдельную тему. Судя по всему (особенно те, кто отключают поиск), многие на это наталкиваются. Приметы проблемы - огромные размеры таблиц для поиска.
atrus
Спасибо большое за reindex_mod !
Главное, что Вы сделали его правильно, учтя проблемы тех, у кого время жизни скриптов ограничено 30 сек.
Сразу же возник вопрос: а нет-ли мода для резервного копирования и восстановления базы форума с учетом ограничения жизни скриптов? Моя база ~80мб уже давно не укладывается в 30сек.