Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Список объектов по свойствам из 2х таблиц (Александр) 09/07/2011 - 20:24:53
      Re: Не очень понятна проблема (Akina) 09/07/2011 - 23:45:08
      Re: Не очень понятна проблема (Александр) 10/07/2011 - 00:11:12
      Re: Не очень понятна проблема (Akina) 10/07/2011 - 13:32:06
      Re: Не очень понятна проблема (Александр) 15/07/2011 - 15:45:36

> Original message text:
> From: Александр - 09/07/2011 - 20:24:53
> Subject:Список объектов по свойствам из 2х таблиц
> -----------------
> Доброго времени суток,
> не уверен, можно ли решить данную задачу одним запросом, более того, сейчас вообще не вижу для нее рациональных решений.
> Пожалуйста, укажите путь :)
>
> Существует несколько тв-каналов, на которых показываются фильмы. У Фильмов есть теги. Для каждого канала ведется история проигранных фильмов, на основе которой можно получить статистику в виде тег - вес тега. (в данном случае вес будет отображать кол-во раз, которое тег встречается во всех фильмах на этом канале), например на канале были показаны следующие фильмы:
>
> фильм 1: драма, музыка, приключения
> фильм 2: комедия, боевик, приключения
>
> соответственно для канала мы получим следующий набор тегов и их весов:
> приключения (2)
> драма (1)
> музыка (1)
> комедия (2)
> боевик (2)
>
> Кроме этого, мы запоминаем историю просмотров пользователя в виде user_id - channel_id.
> Имея для каждого канала набор тегов и их весов, несложно посчитать наиболее предпочитаемые теги пользователем и их веса.
> Сделать это можно по формуле: вес тега = кол-во раз, которое тег встречается в истории просмотров пользователя/кол-во записей в истории просмотра.
>
> т.е. в итоге получается две таблицы: channel_tags, user_preferred_tags
> структура:
>
> channel_tags {
> channel_id: INT,
> tag_id: INT,
> weight: INT
> }
>
> user_preferred_tags {
> user_id: INT,
> tag_id: INT,
> weight: INT
> }
>
> Как на основе этой таблицы можно получить определенное кол-во каналов (channel_id), которые больше всего подходят по релевантности (набольшее кол-во совпадений тегов и их весов), в порядке убывания по этой же релевантности.
>
> Буду безумно рад любой помощи. Догадываюсь что одним запросом дело скорее всего не обойдется.
> Честно гуглил. Но гуглилось плохо, потому что не знаю как у гугла это спросить :(
>


From: Александр - 10/07/2011 - 00:11:12
Subject:Не очень понятна проблема
-----------------
Статические таблицы обновляются скриптом по крону из-за большого кол-ва данных.

Конечная цель - получить n видеоканалов на основе тегов и их весов, чтобы порекомендовать их пользователю.

Гуглил, но опять же столкнулся с проблемой, что не знаю как спрашивать гугл.

Я не понимаю как построить join этих таблиц (чувствую, что дело одним join тут не кончится).

Если описывать подробно процесс, то в php я пока реализовал это так:
1) выбираются все видеоканалы с тегами + веса тегов в массив channels
2) выбираются все теги пользователя с весами
3) в цикле последовательно проходим по массиву radios и сверяем теги и их веса каждого телекалана и теги пользователя и их веса.
На основе этого имеем 10-15 видеоканалов, в которых есть те же самые теги, которые есть в таблице user_preferred_tags и с подходящими весами.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
39084



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |