Хак позволяющий снизить нагрузку на MySQL, что особенно важно для сайтов расположенных на виртуальном хостинге.
Исследовав mysql.slow-queries.log автор наткнулся на очень много запросов на выборку похожих новостей.
И вот какое решение он предложил ...
Установка:
Делаем FULLTEXT поиск только для названия новости и краткой новости:
выполняем запрос(не забывайте поменять префикс dle на свой, если он у вас другой):
ALTER TABLE `dle_post` DROP INDEX `short_story` ,
ADD FULLTEXT `short_story` (
`short_story` ,
`title`
)открываем engine/modulles/show.full.php находим:
WHERE MATCH (title, short_story, full_story, xfields)и меняем на:
WHERE MATCH (title, short_story)Подправляем, чтобы работал поиск похожих новостей в админке:
открываем engine/ajax/find_relates.php находим:
$db->query( "SELECT id, title, date, category, alt_name, flag, MATCH (title, short_story, full_story, xfields) AGAINST ('$title') as score FROM " . PREFIX . "_post WHERE MATCH (title, short_story, full_story, xfields) AGAINST ('$title') AND approve='1'" . $where . " ORDER BY score DESC, date DESC LIMIT 5" );и меняем на:
$db->query( "SELECT id, title, date, category, alt_name, flag, MATCH (title, short_story) AGAINST ('$title') as score FROM " . PREFIX . "_post WHERE MATCH (title, short_story) AGAINST ('$title') AND approve='1'" . $where . " ORDER BY score DESC, date DESC LIMIT 5" );Спасибо за внимание!

Главная
