Поиск DLE очень долго ищет

I
На сайте с 01.05.2016
Offline
104
295

Ранее писал на форуме о проблеме. Советовали смотреть в сторону FULLTEXT и BOOLEAN MODE.

В общем создал индекс в таблице dle_post

CREATE FULLTEXT INDEX srchtitle ON dle_post (title);

Затем отправился редактировать файл search.php -

было -

			if ($config['full_search']) {

$titleonly_where = array ('0' => "MATCH(title,short_story,full_story,xfields) AGAINST ('{story}' IN BOOLEAN MODE)",
'1' => "MATCH(text) AGAINST ('{story}' IN BOOLEAN MODE)",
'2' => "MATCH(" . PREFIX . "_static.template) AGAINST ('{story}' IN BOOLEAN MODE)",
'3' => "title LIKE '%{story}%'" );

if ($titleonly < 3 AND $sortby == "" ) {
$full_s_addfield = ", ".$titleonly_where[$titleonly]." as score";
$full_s_addfield = str_replace( "{story}", $db->safesql($story), $full_s_addfield );
$sortby = "score";

}

} else {

$titleonly_where = array ('0' => "short_story LIKE '%{story}%' OR full_story LIKE '%{story}%' OR xfields LIKE '%{story}%' OR title LIKE '%{story}%'",
'1' => "text LIKE '%{story}%'",
'2' => PREFIX . "_static.template LIKE '%{story}%'",
'3' => "title LIKE '%{story}%'" );
}

Стало -

				if ($config['full_search']) {

$titleonly_where = array ('0' => "MATCH(title,short_story,full_story,xfields) AGAINST ('{story}' IN BOOLEAN MODE)",
'1' => "MATCH(text) AGAINST ('{story}' IN BOOLEAN MODE)",
'2' => "MATCH(" . PREFIX . "_static.template) AGAINST ('{story}' IN BOOLEAN MODE)",
'3' => "title LIKE '%{story}%'" );

if ($titleonly < 3 AND $sortby == "" ) {
$full_s_addfield = ", ".$titleonly_where[$titleonly]." as score";
$full_s_addfield = str_replace( "{story}", $db->safesql($story), $full_s_addfield );
$sortby = "score";

}

} else {

$titleonly_where = array ('0' => "short_story LIKE '%{story}%' OR full_story LIKE '%{story}%' OR xfields LIKE '%{story}%' OR title LIKE '%{story}%'",
'1' => "text LIKE '%{story}%'",
'2' => PREFIX . "_static.template LIKE '%{story}%'",
'3' => "MATCH(title) AGAINST ('{story}' IN BOOLEAN MODE)" );
}

Сама форма запроса -

	<form id="q_search" method="post">
<div class="q_search">
<input id="story" name="story" placeholder="Search..." type="search">
<button class="q_search_btn" type="submit" title="Find"><svg class="icon icon-search"><use xlink:href="#icon-search"></use></svg><span class="title_hide">Find</span></button>
</div>
<input type="hidden" name="do" value="search">
<input type="hidden" name="subaction" value="search">
<input type="hidden" name="titleonly" value="3">
</form>

Пытался искать, легче не стало. Так же 20 секунд на поиск. Может чего неправильно сделал?

Вот лог MySQL

572 Connect database@localhost as anonymous on database
572 Query SET NAMES utf8mb4
572 Query SET NAMES 'utf8mb4'
572 Query SELECT @@SESSION.sql_mode
572 Query SELECT * FROM dle_users WHERE user_id='1'
572 Query SELECT COUNT(*) as count FROM dle_post p LEFT JOIN dle_post_extras e ON (p.id=e.news_id) WHERE p.approve=1 AND e.disable_search=0 AND (MATCH(title) AGAINST ('joker' IN BOOLEAN MODE))
572 Query SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM dle_post p LEFT JOIN dle_post_extras e ON (p.id=e.news_id) WHERE p.approve=1 AND e.disable_search=0 AND (MATCH(title) AGAINST ('joker' IN BOOLEAN MODE)) ORDER BY date desc LIMIT 0,10
572 Quit
kimsufi.com (https://www.kimsufi.com) очень дешевые и качественные дедики
_
На сайте с 24.03.2008
Offline
357
#1

man explain итп... вы что думаете кто-то будет эти ваши портянки разбирать ?

ArbNet
На сайте с 27.10.2019
Offline
53
#2

Упс. Это не его портянки, это портянки DLE и тех кто этот DLE делал..

Блажен, кто не стремится сделать лучше: он не рискует быть не понятым.
I
На сайте с 01.05.2016
Offline
104
#3

да ладно, поставлю поиск от гугла)

skapunker
На сайте с 15.01.2014
Offline
145
#4

скорее тут пробема не в ДЛЕ, а в том, что сервер БД медленно работает

Скидка 5% на все услуги reg.ru по промокоду B5A1-2430-5C32-1D70
L
На сайте с 22.11.2013
Offline
94
#5

сколько у вас новостей

оптимизируйте таблицу пост.

в режиме boolean mode должно быстро работать

могу помочь. только для быстрого поиска.

I
На сайте с 01.05.2016
Offline
104
#6
lutskboy:
сколько у вас новостей
оптимизируйте таблицу пост.
в режиме boolean mode должно быстро работать
могу помочь. только для быстрого поиска.

1800 000 новостей) думаю для этого объема 15 с это норма

LEOnidUKG
На сайте с 25.11.2006
Offline
1554
#7
Может чего неправильно сделал?

Полноценный индекс не работает с другими индексами вместе.

Поэтому вам сначала надо делать поиск полноценный, и потом уже из имеющихся данных делать выборку.

Также, рекомендую кэш прикручивать к такому поиску, иначе поднимать полноценный индекс очень "дорого".

✅ Трастовых площадок под размещение статей и ссылок. Опыт 12 лет! ( https://searchengines.guru/ru/forum/675690 ) ⭐ Купить вечные трастовые ссылки для сайта ( https://getmanylinks.ru/?srh ) ⭐ Ускорение ваших сайтов (WP, Opencart и др.) + Настройка сервера ( https://searchengines.guru/ru/forum/997205 )
T7
На сайте с 19.09.2018
Offline
35
#8
iccup:
1800 000 новостей) думаю для этого объема 15 с это норма

Как же без гравицапы:D Просто в другую табличку с правильным фултекст индексом перенесите и "в любую точку вселенной за пять секунд" (с)

5 сек, нет 1 максимум для 2кк текстов.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий