Виджет или поле "Похожий контент"

Виджет или поле "Похожий контент". Чего не хватает?

#1 10 февраля 2015 в 14:44
Была тут подобная тема, но пока делал свою версию поля и виджета, тему порешили. Видимо, надо шустрее быть.
В общем, есть одно "решение". Сделал его на своём демо -сайте (логин/пароль — moderator@krivo.pro/moderator). Обозвал "похожий контент" (Искать по этой фразе в админке: в поле контента, виджетах и компонентах). По сути, создаётся набор фильтров (по аналогии с наборами типов контента) и выводится в нужном месте. На главной вывел сгруппированный виджет, а в записях новостей и статей отдельные виджеты. Контент фильтруется по настройкам и выводится рандомно. Отбор идёт по формуле "Количество выводимых записей" умножено на 2 и добавлена одна запись. Другими словами если указано Количество выводимых записей = 2, то отбираются 5 записей и из них рандомно выводится 2, если указано Количество выводимых записей = 10, то отбирается 21 запись и из них выводятся 10. Если указано 4 записи, а доступно только 4 и меньше, то выведет их в случайном порядке.

ЗЫ. Забыл спросить — чего этому компоненту ещё не хватает?
#2 10 февраля 2015 в 16:48
Контент отбирается не похожий на исходную статью. Возможно, нужно фильтровать массив записей, минимум по тегам, а в идеале по ключевым словам в заголовке или по словам, которые еще часто употребляются в тексте. В данном варианте, думаю, виджет мало отличается от виджета "Случайные записи".
#3 10 февраля 2015 в 17:29
Открыл новость "Инвестиции для чайников: куда вкладывать?" и в похожих новостях вывелась она же. Наверное не стоит выводить ту же самую новость в похожих.
#4 10 февраля 2015 в 17:37
Как вариант можно сделать вывод в две колонки. В одной колонке выводить похожий контент.
Во второй последний добавленный контент за определенный период в случайном порядке.
#5 10 февраля 2015 в 17:50

минимум по тегам

andrey
По тегам можно фильтровать записи, ещё по просмотрам, по комментариям и по определённым полям. По ключевикам пока думаю, как их извлечь из основной записи и применить в фильтре. Ведь в основной записи их может быть 5-10 слов через запятую, может ограничить дело первыми двумя — тремя и искать по паре или по отдельности каждое? А если выводить в виджете вне записи контента, — в списке или на главной, то действительно получается подобие виджета "случайные записи".

Наверное не стоит выводить ту же самую новость в похожих.

qwest
Тоже обратил на это внимание, в случае с записью можно это решить, а вот при выводе в списке, придётся подумать.
#6 10 февраля 2015 в 18:05
Вот на главной виджет выводит похожие статьи, новости и т.п. а на что похожие?
#7 10 февраля 2015 в 19:08

может ограничить дело первыми двумя — тремя и искать по паре или по отдельности каждое?

Loadырь

Ка вариант, можно попробовать сравнивать тексты (через similar_text, levenshtein, soundex) и вычислять процент схожести

  1. similar_text($text1,$text2,$percent);
  2. if ($percent > 50) то $text2 - это похожая запись;
#8 10 февраля 2015 в 21:40
Тоже думал про реализацию дополнения для показа похожих материалов. Остановился на варианте применения алгоритма шинглов, т.к. считаю данное решение наиболее интересным и самое главное более "похожим" по качеству выводимых результатов)))
ссылки в тему:
http://habrahabr.ru/post/65944/
http://utext.rikuz.com/
http://www.cyberforum.ru/php-database/thread649707.html
http://habrahabr.ru/company/ivi/blog/247813/

Как будет свободное время, если ничего подобного никто не реализует, буду пилить сам))
#9 11 февраля 2015 в 08:24

а на что похожие?

qwest
на самих себя.
andrey, Val, спасибо, буду искать оптимальный вариант.
#10 12 февраля 2015 в 07:31
Val, почитал про «Алгоритм Шинглов». Всё таки, немного другое у него целевое назначение. Его используют для сравнения текстов с выдачей некоторого процента схожести, обычно в поисковых системах для отсеивания дубликатов. Работает хорошо, но я полагаю, что разбивать каждый заголовок, ключевые слова и текст каждой записи из базы на шинглы и потом их сравнивать с нужной фразой — делать это на лету — накладно на производительности. Поэтому пока остановился на полнотекстовом поиске по title, seo_keys и content. Осталось накидать контента на демо сайт, чтоб проверить, как отрабатывает. У кого нибудь есть дамп старого ненужного контента (пара сотен статей, уникальность мне ни к чему) или какой-нибудь парсер на пару дней, чтоб не затягивать это на пару лет smile. А то с шестью статьями и десятью новостями, как-то не интересно.
#11 15 февраля 2015 в 17:27
Накидал несколько новостей тут. Добавил полнотекстовый поиск по заголовкам, ключевым словам и основному тексту. Теперь компонент получает ключевые слова той страницы, где установлен виджет или поле и ищет их в зависимости от настроек по заголовкам, ключевым словам и/или основному тексту в тех новостях, что доступны после применения фильтров. Фильтрами можно сократить или переопределить варианты выдачи. В новостях ключевые слова автоматически заполнялись, поэтому там полная каша. И тем не менее связи уже прослеживаются. Или мне это показалось? andrey, что скажете?
#12 15 февраля 2015 в 21:33
Пока не очень понятно. По категориям бы раскидать новости, т.е. заполнить несколько категорий.
И вопрос по кэшированию оно будет?
#13 16 февраля 2015 в 06:41

И вопрос по кэшированию оно будет?

qwest
Кэширование есть, при включении в админке в настройках сайта, количество запросов к базе сокращается чуть меньше, чем вдвое. Но надо продумать ещё, что именно кешировать и как потом это ограничивать по правам доступа. Для пользователя с правами админа разници нет никакой. Сейчас пользователь заходит на страницу, происходит выборка материала согласно его уровню доступа, эти записи и кэшируются, и выдаются следующим пользователям во время жизни кэша. А это не совсем верно. Если у пользователя мало прав, то и кэш будет маленьким и пользователи с расширенным набором прав не увидят доступных им записей. И наоборот гости смогут увидеть наборы из "привата". Поэтому с кэшем ещё работаем. Если будут идеи — делитесь.
#14 16 февраля 2015 в 07:13
Раскидал новости по категориям.
#15 16 февраля 2015 в 09:24
Хорошее решение. А когда можно будет скачать компонент?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.