Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#101 2012-02-10 18:38:22

Сокол
Участник
Откуда Красноярск
Зарегистрирован: 2009-05-23
Сообщений: 227
Рейтинг :   
Сайт

Re: similar :: Похожие новости

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

Не в сети

#102 2012-02-10 19:25:17

easmik
VIP забанил этого пользователя.
Зарегистрирован: 2011-02-01
Сообщений: 1,031
Рейтинг :   37 

Re: similar :: Похожие новости

Их тогда можно вобще не указывать раз они не имеют особого значения.

Не в сети

#103 2012-04-18 19:59:41

legenda
Участник
Откуда ua
Зарегистрирован: 2009-12-22
Сообщений: 2,160
Рейтинг :   39 

Re: similar :: Похожие новости

и все-таки кто может доделать плагин, надо
1. чтоб новости выводились по дате (в даном варианте плагин просто ужасно тупой)
2. желательно работоспособность не только в news.full.tpl но и в main.tpl

Не в сети

#104 2012-10-11 19:55:59

Pavel555
Участник
Зарегистрирован: 2012-09-16
Сообщений: 36
Рейтинг :   

Re: similar :: Похожие новости

Всем доброго дня.

Установлена NGCMS 0.9.3 Changeset 1058 + плагин similar 0.06.

Пробую "Режим вызова" ставить в "Короткая" и "Полная". Ставлю "Короткая", выводятся только заголовки, ставлю "Полная" - страница новости вообще перестает загружаться, выдает следующее:

NGCMS Runtime error: Allowed memory size of 36700160 bytes exhausted (tried to allocate 77 bytes)
[ 1]: Allowed memory size of 36700160 bytes exhausted (tried to allocate 77 bytes)

Stack trace
Line #    File name
103    сайт.ru/engine/plugins/similar/similar.php

"Интеграция с новостными плагинами" установлено в "Да".

И подскажите пожалуйста, есть ли все-таки планы сделать вывод последних по дате новостей при равных условиях похожести по тегам?

Изменено Pavel555 (2012-10-11 20:00:47)

Не в сети

#105 2012-10-11 20:11:44

infinity237
Модератор
Откуда Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

Re: similar :: Похожие новости

Памяти не хватает на сервере.

Не в сети

#106 2012-10-11 22:50:56

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: similar :: Похожие новости

Pavel555, какой-то очень странный косяк.
Пишет, что не хватает памяти, но при этом израсходовано 35Mb.
Проблема возникает только при включении similar?
Какое двиг указывает потребление памяти с отключенным similar?

Не в сети

#107 2012-10-12 05:25:20

Pavel555
Участник
Зарегистрирован: 2012-09-16
Сообщений: 36
Рейтинг :   

Re: similar :: Похожие новости

Да, глюк с незагрузкой страницы возникает только при при включеном similar и "Режим вызова": "Полная".
В режиме "Короткая" страница новости загружается, но в похожих статьях только заголовки.

vitaly пишет:

Какое двиг указывает потребление памяти с отключенным similar?

Как это посмотреть?

Не в сети

#108 2012-10-12 09:32:06

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: similar :: Похожие новости

Pavel555, переменная {memPeakUsage} в main.tpl
Сайт установлен на хостинге или ты на локальной машине экспериментируешь?
Если на хостинге, то кидай в личку доступы (ftp + логин админа на сайте), посмотрю. Очень похоже на какую-то петлю.... кстати, ты ведь не включал include'ы в шаблонах? smile

Не в сети

#109 2012-10-12 10:21:06

Pavel555
Участник
Зарегистрирован: 2012-09-16
Сообщений: 36
Рейтинг :   

Re: similar :: Похожие новости

{memPeakUsage}:
similar отключен: 4.592
similar включен: 4.736

Сайт на хостинге. Доступ кинул. Поясни пожалуйста, что значит "включать include'ы в шаблонах?"

И что насчет отбора самых свежих новостей при равном подобии по тегам? Есть в планах?

Не в сети

#110 2012-10-13 02:17:25

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: similar :: Похожие новости

Pavel555, нашел ошибку в плагине - он вызывал сам себя и таким образом мог скушать любое кол-во памяти sad
Обновил версию до 0.07 у тебя на сайте и в SVN

И что насчет отбора самых свежих новостей при равном подобии по тегам? Есть в планах?

В планах-то есть, но ведь полное соответствие по тегам бывает редко. Поэтому нужно учитывать как-то либо минимальное кол-во совпадений чтобы новость считать "похожей", либо какой-то другой алгоритм придумывать.

Не в сети

#111 2012-10-13 06:04:01

Pavel555
Участник
Зарегистрирован: 2012-09-16
Сообщений: 36
Рейтинг :   

Re: similar :: Похожие новости

Спасибо! Ошибка исчезла, но разницы между "Экспорт", "Полная" и "Короткая" так и не наблюдается. Во всех случаях выводится только заголовок похожей статьи.

vitaly пишет:

полное соответствие по тегам бывает редко

Позволю себе не согласиться. Часто новость имет 2-3 тега, которые отражают самую суть. Например, в заметке про территориальный спор Китая и Японии будет 2 тега: Япония и название спорного объекта. Китай не будет тегом, т.к. весь сайт посвящен Китаю. Т.о., тут 2 тега, плодить большее количество тегов для такой новости - излишне. Далее, проходит месяц, два, в течение этого времени мы освещаем развитие ситуации в последующих новостях. Теги остаются те же. И вот тут очень неплохо было бы выводить в похожих самые последние статьи по данным тегам, а не статьи 2-месячной давности.

Не в сети

#112 2012-10-13 06:54:16

Pavel555
Участник
Зарегистрирован: 2012-09-16
Сообщений: 36
Рейтинг :   

Re: similar :: Похожие новости

Где меняется надпись "Понравилась тема? Посмотрите эти:"?
Сделал поиск по всем файлам сайта, нигде не нашел.

Не в сети

#113 2012-10-13 16:37:05

legenda
Участник
Откуда ua
Зарегистрирован: 2009-12-22
Сообщений: 2,160
Рейтинг :   39 

Re: similar :: Похожие новости

Pavel555, я уже больше года как писал что надо віводить новости по дате а не статьи 2-месячной или 3 годовой давности когда есть вчерашние

Не в сети

#114 2012-10-13 18:04:02

irbees2008
Продвинутый чайник ;)
Откуда Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2,873
Рейтинг :   121 
Сайт

Re: similar :: Похожие новости

Pavel555 пишет:

Где меняется надпись "Понравилась тема? Посмотрите эти:"?
Сделал поиск по всем файлам сайта, нигде не нашел.

\engine\plugins\similar\tpl\similar.tpl

Не в сети

#115 2012-10-13 18:05:50

irbees2008
Продвинутый чайник ;)
Откуда Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2,873
Рейтинг :   121 
Сайт

Re: similar :: Похожие новости

legenda пишет:

Pavel555, я уже больше года как писал что надо віводить новости по дате а не статьи 2-месячной или 3 годовой давности когда есть вчерашние

желательно с выбором

Не в сети

#116 2012-10-13 18:15:46

Pavel555
Участник
Зарегистрирован: 2012-09-16
Сообщений: 36
Рейтинг :   

Re: similar :: Похожие новости

legenda пишет:

Pavel555, я уже больше года как писал что надо віводить новости по дате а не статьи 2-месячной или 3 годовой давности когда есть вчерашние

Да, я видел. Поддерживаю эту необходимость.

irbees2008 пишет:

\engine\plugins\similar\tpl\similar.tpl

Вот его содержимое:
<div style="border: #DDDDDD 1px solid; margin-bottom: 5px;">
<div style="background: #DDDDDD;">Похожие новости:</div>
<table border="0" width="100%" cellspacing="0" cellpadding="0" style="margin-left: 3px;">
<tr><td>
{entries}
</td></tr>
</table>
</div>

Но все равно выводится "Понравилась тема? Посмотрите эти:"

Кэш чистил.

Не в сети

#117 2012-10-13 18:27:49

irbees2008
Продвинутый чайник ;)
Откуда Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2,873
Рейтинг :   121 
Сайт

Re: similar :: Похожие новости

Pavel555 пишет:
legenda пишет:

Pavel555, я уже больше года как писал что надо віводить новости по дате а не статьи 2-месячной или 3 годовой давности когда есть вчерашние

Да, я видел. Поддерживаю эту необходимость.

irbees2008 пишет:

\engine\plugins\similar\tpl\similar.tpl

Вот его содержимое:
<div style="border: #DDDDDD 1px solid; margin-bottom: 5px;">
<div style="background: #DDDDDD;">Похожие новости:</div>
<table border="0" width="100%" cellspacing="0" cellpadding="0" style="margin-left: 3px;">
<tr><td>
{entries}
</td></tr>
</table>
</div>

Но все равно выводится "Понравилась тема? Посмотрите эти:"

Кэш чистил.

адрес сайта ,глянуть надо
или сам посмотри в news.full

Изменено irbees2008 (2012-10-13 19:30:47)

Не в сети

#118 2012-10-13 20:33:35

Pavel555
Участник
Зарегистрирован: 2012-09-16
Сообщений: 36
Рейтинг :   

Re: similar :: Похожие новости

С надписью разобрался, я смотрел в /engine/plugins/similar/tpl/, а надо было - в /templates/шаблон/plugins/similar/.

Не в сети

#119 2012-11-13 19:06:43

Pavel555
Участник
Зарегистрирован: 2012-09-16
Сообщений: 36
Рейтинг :   

Re: similar :: Похожие новости

vitaly пишет:

И что насчет отбора самых свежих новостей при равном подобии по тегам? Есть в планах?

В планах-то есть, но ведь полное соответствие по тегам бывает редко. Поэтому нужно учитывать как-то либо минимальное кол-во совпадений чтобы новость считать "похожей", либо какой-то другой алгоритм придумывать.

Pavel555 пишет:
vitaly пишет:

полное соответствие по тегам бывает редко

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

legenda пишет:

Pavel555, я уже больше года как писал что надо віводить новости по дате а не статьи 2-месячной или 3 годовой давности когда есть вчерашние

Виталий, фича действительно нужная. Терпеливо ждем smile

Не в сети

#120 2013-02-01 12:24:02

Pavel555
Участник
Зарегистрирован: 2012-09-16
Сообщений: 36
Рейтинг :   

Re: similar :: Похожие новости

Добрый день, Виталий. Подскажи пожалуйста, есть подвижки выводу похожих новостей по схеме "новые первыми"?

Не в сети

#121 2013-03-31 11:52:41

Ololosha
Участник
Зарегистрирован: 2013-03-31
Сообщений: 3
Рейтинг :   

Re: similar :: Похожие новости

Здравствуйте. Как можно вытащить ID новости (используется в новостях - {news-id})? При выводе похожих новостей мне нужно ID, а там кроме названия, ссылки и даты нет ничего...
Спасибо.

Не в сети

#122 2013-12-07 17:28:21

irbees2008
Продвинутый чайник ;)
Откуда Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2,873
Рейтинг :   121 
Сайт

Re: similar :: Похожие новости

Есть возможность вывода в короткую новость?

Не в сети

#123 2014-01-14 19:34:54

legenda
Участник
Откуда ua
Зарегистрирован: 2009-12-22
Сообщений: 2,160
Рейтинг :   39 

Re: similar :: Похожие новости

счас занимаемся переделкой плагина, есть пару вопросов

1. Как проходит выборка в плагине?(критерии)
2. В каком файле и где именно оно выбирает какие новости выводить на сайт.

Может кто то подсказать? а то вапше принцип видачи непонтний

Не в сети

#124 2014-01-15 02:17:36

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: similar :: Похожие новости

Логически плагин состоит из 2х частей:
1. Расчёт похожести новостей
2. Отображение списка "похожих" внутри целевой новости

Похожесть
Обновление происходит в момент редактирования/добавления новости.
Для неё (и всех "похожих" на неё) происходит пересчёт таблицы индексов (ng_similar_index).
Функции:

		// Reset linked news
		plugin_similar_resetLinked($newsID);

		// Reset news with the same tags [ AFTER actual edit - new tags ]
		plugin_similar_reset($newsID);

Сама похожесть определяется в plugin_similar_repopulate(), inc/similar.php, строка ~118:

		$list = $mysql->select("select i.newsID, count(i.tagID) as cnt, n.title, n.editdate, n.postdate from ".prefix."_tags_index i left join ".prefix."_news n on n.id = i.newsID where (i.newsID <> ".db_squote($newsID).") and (i.tagID in ( select tagID from ".prefix."_tags_index where newsID = ".db_squote($newsID).") ) group by newsID order by cnt desc");

.. изменяя этот SQL запрос (или заменив его на более сложную логику) можно изменить логику определения степени похожести

Принцип выдачи описан в конфигураторе плагина:

ВНИМАНИЕ!
Это - первый этап реализации плагина. Плагин оценивает похожесть новости только по данным, предоставляемым плагином tags (облако тегов).
В будущих версиях появится возможность более сложного анализа.

При этом обрати внимание - есть поле dimension, которое позволяет использовать разные механизмы определения похожести.
dimension = 0 - текущий вариант (т.е. по тегам), остальные варианты не используются, при доработке плагина лучше воспользоваться этим полем - это позволит, к примеру, создать собственный принцип определения похожести и при этом сохранить структуру БД и обратную совместимость.


Отображение списка
similar.php, начинается с:

	function showNews($newsID, $SQLnews, &$tvars, $mode = array()) {

дальше всё очевидно и просто.


Переделка
Первое что приходит в голову - начать учитывать не только теги, но и "расстояние во времени" (разницу между временем публикации основной новости и "похожих" на неё) и ввести некий коэффициен.
К примеру, уменьшать степень похожести ("...order by cnt desc") на 10% за каждые 10 дней между новостями, тогда при совпадении 5 тегов, но с разницей в 30 дней новость будет менее "похожей" чем при совпадении 4 тегов, но разницей в 1 день.

Аналогично можно ввести какой-либо коэффициент за нахождение новости в той же категории....

В общем, дальше только полёт фантазии.
А после окончания фантазий нам остаётся только взять inc/similar.php, строка ~120:

		// Populate data for our news
		for ($i = 0; $i < min(count($list), $count); $i++) {
			$row = $list[$i];
			$mysql->query("insert into ".prefix."_similar_index (newsID, refNewsID, refNewsQuantaty, refNewsTitle, refNewsDate) values (".db_squote($newsID).", ".db_squote($row['newsID']).", ".db_squote($row['cnt']).", ".db_squote($row['title']).", ".db_squote(($row['editdate']>$row['postdate'])?$row['editdate']:$row['postdate']).")");
		}

		foreach ($list as $row)
			$affectedList [ $row['newsID'] ] = $row['newsID'];

и вписать сюда свой код (задав собственное значение dimension для полного счастья).

Не в сети

#125 2014-01-21 19:32:49

Lagun
Участник
Зарегистрирован: 2013-12-20
Сообщений: 5
Рейтинг :   

Re: similar :: Похожие новости

vitaly пишет:

Логически плагин состоит из 2х частей:
1. Расчёт похожести новостей
2. Отображение списка "похожих" внутри целевой новости

Похожесть
Обновление происходит в момент редактирования/добавления новости.
Для неё (и всех "похожих" на неё) происходит пересчёт таблицы индексов (ng_similar_index).
Функции:

		// Reset linked news
		plugin_similar_resetLinked($newsID);

		// Reset news with the same tags [ AFTER actual edit - new tags ]
		plugin_similar_reset($newsID);

Сама похожесть определяется в plugin_similar_repopulate(), inc/similar.php, строка ~118:

		$list = $mysql->select("select i.newsID, count(i.tagID) as cnt, n.title, n.editdate, n.postdate from ".prefix."_tags_index i left join ".prefix."_news n on n.id = i.newsID where (i.newsID <> ".db_squote($newsID).") and (i.tagID in ( select tagID from ".prefix."_tags_index where newsID = ".db_squote($newsID).") ) group by newsID order by cnt desc");

.. изменяя этот SQL запрос (или заменив его на более сложную логику) можно изменить логику определения степени похожести

Принцип выдачи описан в конфигураторе плагина:

ВНИМАНИЕ!
Это - первый этап реализации плагина. Плагин оценивает похожесть новости только по данным, предоставляемым плагином tags (облако тегов).
В будущих версиях появится возможность более сложного анализа.

При этом обрати внимание - есть поле dimension, которое позволяет использовать разные механизмы определения похожести.
dimension = 0 - текущий вариант (т.е. по тегам), остальные варианты не используются, при доработке плагина лучше воспользоваться этим полем - это позволит, к примеру, создать собственный принцип определения похожести и при этом сохранить структуру БД и обратную совместимость.


Отображение списка
similar.php, начинается с:

	function showNews($newsID, $SQLnews, &$tvars, $mode = array()) {

дальше всё очевидно и просто.


Переделка
Первое что приходит в голову - начать учитывать не только теги, но и "расстояние во времени" (разницу между временем публикации основной новости и "похожих" на неё) и ввести некий коэффициен.
К примеру, уменьшать степень похожести ("...order by cnt desc") на 10% за каждые 10 дней между новостями, тогда при совпадении 5 тегов, но с разницей в 30 дней новость будет менее "похожей" чем при совпадении 4 тегов, но разницей в 1 день.

Аналогично можно ввести какой-либо коэффициент за нахождение новости в той же категории....

В общем, дальше только полёт фантазии.
А после окончания фантазий нам остаётся только взять inc/similar.php, строка ~120:

		// Populate data for our news
		for ($i = 0; $i < min(count($list), $count); $i++) {
			$row = $list[$i];
			$mysql->query("insert into ".prefix."_similar_index (newsID, refNewsID, refNewsQuantaty, refNewsTitle, refNewsDate) values (".db_squote($newsID).", ".db_squote($row['newsID']).", ".db_squote($row['cnt']).", ".db_squote($row['title']).", ".db_squote(($row['editdate']>$row['postdate'])?$row['editdate']:$row['postdate']).")");
		}

		foreach ($list as $row)
			$affectedList [ $row['newsID'] ] = $row['newsID'];

и вписать сюда свой код (задав собственное значение dimension для полного счастья).

А как сделать похожесть по интервалу в дате если в столбце refnewsid записана только 1 новость,каким образом берутся следующие? Или я неправильно понимаю механизм вашего запроса.

Изменено Lagun (2014-01-21 19:34:47)

Не в сети

Подвал раздела

Работает на FluxBB