Вы не вошли.
Было бы неплохо сделать возможность исключать нежелательные теги.
Просто, некоторые теги могут очень часто повторяться, но не иметь важности для новости.
Вне форума
Их тогда можно вобще не указывать раз они не имеют особого значения.
Все сайты, что могут быть сделаны на ng cms, должны быть сделаны на ng cms.
Расширив границы сознания, мы открываем новые горизонты жизни.
Вне форума
и все-таки кто может доделать плагин, надо
1. чтоб новости выводились по дате (в даном варианте плагин просто ужасно тупой)
2. желательно работоспособность не только в news.full.tpl но и в main.tpl
Вне форума
Всем доброго дня.
Установлена 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 19:00:47)
Вне форума
Памяти не хватает на сервере.
Вне форума
Pavel555, какой-то очень странный косяк.
Пишет, что не хватает памяти, но при этом израсходовано 35Mb.
Проблема возникает только при включении similar?
Какое двиг указывает потребление памяти с отключенным similar?
Вне форума
Да, глюк с незагрузкой страницы возникает только при при включеном similar и "Режим вызова": "Полная".
В режиме "Короткая" страница новости загружается, но в похожих статьях только заголовки.
Какое двиг указывает потребление памяти с отключенным similar?
Как это посмотреть?
Вне форума
Pavel555, переменная {memPeakUsage} в main.tpl
Сайт установлен на хостинге или ты на локальной машине экспериментируешь?
Если на хостинге, то кидай в личку доступы (ftp + логин админа на сайте), посмотрю. Очень похоже на какую-то петлю.... кстати, ты ведь не включал include'ы в шаблонах? :)
Вне форума
{memPeakUsage}:
similar отключен: 4.592
similar включен: 4.736
Сайт на хостинге. Доступ кинул. Поясни пожалуйста, что значит "включать include'ы в шаблонах?"
И что насчет отбора самых свежих новостей при равном подобии по тегам? Есть в планах?
Вне форума
Pavel555, нашел ошибку в плагине - он вызывал сам себя и таким образом мог скушать любое кол-во памяти ![]()
Обновил версию до 0.07 у тебя на сайте и в SVN
И что насчет отбора самых свежих новостей при равном подобии по тегам? Есть в планах?
В планах-то есть, но ведь полное соответствие по тегам бывает редко. Поэтому нужно учитывать как-то либо минимальное кол-во совпадений чтобы новость считать "похожей", либо какой-то другой алгоритм придумывать.
Вне форума
Спасибо! Ошибка исчезла, но разницы между "Экспорт", "Полная" и "Короткая" так и не наблюдается. Во всех случаях выводится только заголовок похожей статьи.
полное соответствие по тегам бывает редко
Позволю себе не согласиться. Часто новость имет 2-3 тега, которые отражают самую суть. Например, в заметке про территориальный спор Китая и Японии будет 2 тега: Япония и название спорного объекта. Китай не будет тегом, т.к. весь сайт посвящен Китаю. Т.о., тут 2 тега, плодить большее количество тегов для такой новости - излишне. Далее, проходит месяц, два, в течение этого времени мы освещаем развитие ситуации в последующих новостях. Теги остаются те же. И вот тут очень неплохо было бы выводить в похожих самые последние статьи по данным тегам, а не статьи 2-месячной давности.
Вне форума
Где меняется надпись "Понравилась тема? Посмотрите эти:"?
Сделал поиск по всем файлам сайта, нигде не нашел.
\engine\plugins\similar\tpl\similar.tpl
жизнь бьёт ключом......,ну иногда и гайкой.....
Хаки и Скрипты| Бесплатные шаблоны NGCMS
На Районе - Шахтинск Украшение Windows
Вне форума
Pavel555, я уже больше года как писал что надо віводить новости по дате а не статьи 2-месячной или 3 годовой давности когда есть вчерашние
желательно с выбором
жизнь бьёт ключом......,ну иногда и гайкой.....
Хаки и Скрипты| Бесплатные шаблоны NGCMS
На Районе - Шахтинск Украшение Windows
Вне форума
Pavel555, я уже больше года как писал что надо віводить новости по дате а не статьи 2-месячной или 3 годовой давности когда есть вчерашние
Да, я видел. Поддерживаю эту необходимость.
\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>
Но все равно выводится "Понравилась тема? Посмотрите эти:"
Кэш чистил.
Вне форума
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 18:30:47)
жизнь бьёт ключом......,ну иногда и гайкой.....
Хаки и Скрипты| Бесплатные шаблоны NGCMS
На Районе - Шахтинск Украшение Windows
Вне форума
И что насчет отбора самых свежих новостей при равном подобии по тегам? Есть в планах?
В планах-то есть, но ведь полное соответствие по тегам бывает редко. Поэтому нужно учитывать как-то либо минимальное кол-во совпадений чтобы новость считать "похожей", либо какой-то другой алгоритм придумывать.
vitaly пишет:полное соответствие по тегам бывает редко
Позволю себе не согласиться. Часто новость имет 2-3 тега, которые отражают самую суть .... проходит месяц, два, в течение этого времени мы освещаем развитие ситуации в последующих новостях. Теги остаются те же. И вот тут очень неплохо было бы выводить в похожих самые последние статьи по данным тегам, а не статьи 2-месячной давности.
Pavel555, я уже больше года как писал что надо віводить новости по дате а не статьи 2-месячной или 3 годовой давности когда есть вчерашние
Виталий, фича действительно нужная. Терпеливо ждем :)
Вне форума
Есть возможность вывода в короткую новость?
жизнь бьёт ключом......,ну иногда и гайкой.....
Хаки и Скрипты| Бесплатные шаблоны NGCMS
На Районе - Шахтинск Украшение Windows
Вне форума
счас занимаемся переделкой плагина, есть пару вопросов
1. Как проходит выборка в плагине?(критерии)
2. В каком файле и где именно оно выбирает какие новости выводить на сайт.
Может кто то подсказать? а то вапше принцип видачи непонтний
Вне форума
Логически плагин состоит из 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 для полного счастья).
Вне форума
Логически плагин состоит из 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 18:34:47)
Вне форума
[ Сгенерировано за 0.057 сек, 7 запросов выполнено - Использовано памяти: 654.52 Кбайт (Пик: 707.52 Кбайт) ]