iOweYouNothing

iOweYouNothing
Рейтинг
198
Регистрация
08.01.2011
netwind:
неправильный DLE

скорее всего.

админка мне чужда - я ручками в коде привык ковыряться.

скажем так - я облазил /engine/modules/search.php и не нашел там ниодного MATCH - только LIKE.

netwind, огромнейшее вам спасибо. вы дали мне направление - я поколупался в коде. ДЛЕ на самом деле ищет по LIKE. Я ручками переписал поиск на MATCH.... AGAINST.

Поиск начал в 3 раза быстрее работать.

вот что было:

short_story LIKE '%{story}%' OR full_story LIKE '%{story}%' OR xfields LIKE '%{story}%' OR title LIKE '%{story}%'

по полям short_story,full_story,xfields,title есть FULLTEXT индекс, который разработчики ДЛЕ изначально сделали, но не используют по каким-то причинам в поиске.

а вот что я сделал:

MATCH (short_story,full_story,xfields,title) AGAINST ('{story}')

поправьте меня - это ведь фактически эквивалентные запросы?

netwind,

SELECT COUNT(*) AS count FROM dle_post WHERE dle_post.approve AND (short_story LIKE '%пиранья%' OR full_story LIKE '%пиранья%' OR title LIKE '%пиранья%')
SELECT id, autor, dle_post.date AS newsdate, dle_post.date AS date, short_story AS story, dle_post.xfields AS xfields, title, descr, keywords, category, alt_name, comm_num AS comm_in_news, allow_comm, rating, news_read, flag, editdate, editor, reason, view_edit, tags, '' AS output_comms FROM dle_post WHERE dle_post.approve AND (short_story LIKE '%пиранья%' OR full_story LIKE '%пиранья%' OR title LIKE '%пиранья%') ORDER BY date desc LIMIT 0,20

этот

netwind, и не только кнопочки :)

Попытаюсь немного пролить свет: стандартный поиск в ДЛЕ по ооочень большой базе. Работает крайне медленно по сравнению с остальной частью сайта. Вот и ищется решение.

535i добавил 20.01.2011 в 23:46

Дополню:

ДЛЕ при стандартном поиске использует конструкцию

SELECT **** WHERE dle_post.approve AND (short_story LIKE '%фраза%' OR full_story LIKE '%фраза%' OR title LIKE '%фраза%') ***

в мануалах к мускулю сказано, что "В команде величина LIKE начинается с шаблонного символа..." (т.е., знак процента "%") и как результат "команды SELECT не будут использовать индексы" :( :( (а они то есть, только тупо не используются из-за особенности мускуля).

поэтому вся затыка - как я уже писал, база огромная, траф большой.

даже если кешировать результаты поиска в кеше мускуля - этого на долго не хватает (любой INSERT вычищает кеш).

в общем, ищется РЕШЕНИЕ.

ткните носом в примеры прикручивания сфинкса к двигу дле

тому, кто пукнул мне в овощ, объясняю: я написал в теме домен только после того, как он баню отловил - тут уже и палить можно (т.е. монопенисуально). и саппорт отреагировал.

а в общем, мне всё равно - если уровень интеллекта не позволяет сделать выводы - как говориться, горбатого могила вылечит :)

_depositfiles-dl81.net каспер спалил :(

CrazyMyxa, дайте товар посмотреть и стату.

manag3r, если дейликешевский модуль используешь - там во многих местах править надо (одним комментом не обойдешься - стукни в личку, договоримся).

если руки правильные - в енжине/модулес/дс_модуль.пхп в 3-х местах закомментируй код:

if($tpl->result['info']) $tpl->result['info'] = $tpl->result['dailycash'].$tpl->result['info'];
else $tpl->result['content'] = $tpl->result['dailycash'].$tpl->result['content'];

manag3r, это у них мускуль по некоторым запросам выгоняет - если в запросе например апостроф или знак процента есть - т.е., запрещенные символы в запросе (по докам мускуля).

Всего: 1354