• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Помощь Не везде выводятся похожие новости

yura

Гуру форума
Регистрация
5 Апр 2006
Сообщения
468
Реакции
69
Есть сайт, на данный момент он на 10.1. Изначально был примерно на 7.2 и периодически обновлялся. Сайт на голом ДЛЕ, модуль только один и тот подключается инклудом в шаблоне.

В чем суть... На сайте более 250 категорий и более 3000 новостей. На многих "старых" новостях не выводятся похожие новости. Иногда бывает также, что похожие новости не выводятся в новых новостях, которые размещены в старых (давно созданных) категориях.
Бывает также что выводятся не все похожие новости. Т.е. прописано выводить 4, а выводится 1-2.

В категориях минимум по 5 новостей, т.е. в какую-бы новость не зашел - в этой же категории найдется еще 4 для вывода в похожих. Но нет... :(

Эти вот "старые" новости и категории это единственное, что общее у новостей без похожих новостей.

Сразу скажу - очищать кеши и перестраивать новости/похожие новости, играться с настройками вывода похожих новостей просто и сайта и с той же категории, кеширование - со всем этим игрался!

Специально включил на сервере логи мускула (айди похожих новостей хранятся в таблице _post_extras в поле related_ids, айди записываются при первом посещении новости) - в одних новостях есть отправка айди в базу, а в некоторых нет
Код:
  140 Connect dle_user@localhost on base
    140 Query SET NAMES 'cp1251'
    140 Query SELECT category FROM dle_post where  id = '3121' AND approve
    140 Query SELECT * FROM dle_users WHERE user_id='1'
    140 Query SELECT * FROM dle_post LEFT JOIN dle_post_extras ON (dle_post.id=dle_post_extras.news_id) WHERE  id = '3121'
    140 Query UPDATE dle_post_extras SET news_read=news_read+1 WHERE news_id='3121'
    140 Query SELECT id, date, short_story, xfields, title, category, alt_name FROM dle_post WHERE category regexp '[[:<:]](272)[[:>:]]' AND MATCH (title, short_story, full_story, xfields) AGAINST ('ТАЙТЛ НОВОСТИ ') AND id != 3121 AND approve=1 AND date < '2015-12-26 20:22:23' LIMIT 4
    140 Quit

Помогите в какую сторону копать :) Заранее спасибо за ответы!
 
А что собственно возвращает запрос:
Код:
SELECT id, date, short_story, xfields, title, category, alt_name FROM dle_post WHERE category regexp '[[:<:]](272)[[:>:]]' AND MATCH (title, short_story, full_story, xfields) AGAINST ('ТАЙТЛ НОВОСТИ ') AND id != 3121 AND approve=1 AND date < '2015-12-26 20:22:23' LIMIT 4
И показываются ли у новости 3121 похожие новости? Если да - нужны логи тех, у кого не показываются.
 
А что собственно возвращает запрос:
Как понять что он возвращает? Сорри если вопрос глупый, я просто не очень прогаммист :)

Новость 3121 без похожих новостей

Вот фрагмента лога где айди похожих новостей прописываются:
Код:
     89 Connect db_user@localhost on base
     89 Query SET NAMES 'cp1251'
     89 Query SELECT category FROM dle_post where  id = '830' AND approve
     89 Query SELECT * FROM dle_post LEFT JOIN dle_post_extras ON (dle_post.id=dle_post_extras.news_id) WHERE  id = '830'
     89 Query UPDATE dle_post_extras SET news_read=news_read+1 WHERE news_id='830'
     89 Query SELECT id, date, short_story, xfields, title, category, alt_name FROM dle_post WHERE category regexp '[[:<:]](137)[[:>:]]' AND MATCH (title, short_story, full_story, xfields) AGAINST ('Tuning Ford Focus Tuning Ford Focus ST') AND id != 830 AND approve=1 AND date < '2015-12-26 20:21:58' LIMIT 4
     89 Query UPDATE dle_post_extras SET related_ids='836,837,835,832' WHERE news_id='830'
     89 Quit
Как видно с лога новость 830 получает похожие новости 836,837,835,832
 
Последнее редактирование:
всмысле выполни запрос в пхпМаяАдмин и покажи результат ))) Только тайтл пропиши верный, а то ты заменял
 
Выполнил следующий запрос
Код:
UPDATE dle_post_extras SET related_ids='4,5,7,8' WHERE news_id='6'
Со своим префиксом разумеется...
Айди похожих новостей вписались!
Выполнил этот запрос к соседней новости
SELECT id, date, short_story, xfields, title, category, alt_name FROM dle_post WHERE category regexp '[[:<:]](272)[[:>:]]' AND MATCH (title, short_story, full_story, xfields) AGAINST ('ТАЙТЛ НОВОСТИ ') AND id != 3121 AND approve=1 AND date < '2015-12-26 20:22:23' LIMIT 4
Только с реальными префиксами, тайтлом... Мускул вернул пустой результат (т.е. ноль строк) - как гласит пхпмайадмин
 
П.С. Это скорее не важно т.к. фрагмент кода о похожих новостях в show.full все равно давно кардинально не менялся... Я обновился с 10.1 до 10.6
 
Смотри, я не просто так попросил выполнить тот запрос.

И так, ошибки в ДЛЕ нет. Всё корректно.
Принцип работы похожих новостей - этот запрос ищет ID статей, которые имеют что-то похожее с заголовком текущей новости, которые опубликованы, но при этом они опубликованы раньше, чем текущая.

Раз запрос вернул ноль строк, то похожих статей просто нет в базе. Как вариант - править код и убрать требование, чтобы новости были старее текущей.
 
У меня на сайте есть категории, которые я создаю и сразу же добавляю в них минимум 5 новостей, заголовки похожи. И в первой из новостей этого раздела (по айди) выводятся в похожих новостях более новые... Айди похожих новостей ведь записываются при первом заходе в новость..

И есть разделы где новостей 20-30-40, заголовки абсолютно все похожи, НО... у самых первых (старых) новостей может не быть похожих новостей, потом у более новых быть, а у самых новых снова не быть....

Мистика какая-то

Разница в самих новостях может быть разве что в том, что у части из них только заголовок, а у части этот же заголовок вписан еще и как тайтл. Но и это различие не мешает формировать похожие новости
 
Да, да, сори, я косякнул... Там не дата публикации, конечно, а текущая дата... Т.е. чтобы новости, которые уже есть на сайте, но будут опубликованы в будущем (есть и такая настройка) не показывались в похожих.

В твоём случае не выполняется именно часть:
MATCH (title, short_story, full_story, xfields) AGAINST ('ТАЙТЛ НОВОСТИ ')

Ну а почему она не выполняется - не имея базы и глубоких знаний MySQL сказать не реально. Попробуй обратиться в раздел по MySQL и выложить пример строк БД из одной из проблемных категорий. Кажись, там @latteo у нас гуру, быстро тебе объяснит что не так. Ну либо вернёт к нам в раздел ))
 
Последнее редактирование:
  • Нравится
Реакции: yura
Создал тему в разделе по мускулу - Для просмотра ссылки Войди или Зарегистрируйся

Кстати гуглил свою проблему - каменты о том, что похожие новости не выводятся есть даже на сайте у целки. Где о разумеется съезжает, что код формирования похожих новостей давно не менялся, я не я и лошадь не моя, все работает. Так что проблема таки не у одного меня
 
Назад
Сверху