Beh, eseguo un piccolo sito Web di video e sulla pagina video effettiva c'è una striscia di "video correlati" simile alla maggior parte dei video (es. YouTube) e attualmente tutto ciò che sto facendo è prendere uno dei suoi tag in modo casuale e trovare altri video con lo stesso tag. Non sorprende che questo non sia un ottimo metodo in quanto alcuni tag sono molto vaghi e alcuni video sono etichettati erroneamente.Cercare consigli su una query "video correlati" su un sistema video codificato
Esempio di query corrente:
SELECT video_name FROM videos INNER JOIN videotags ON videos.id=videotags.video_id INNER JOIN tags ON tags.id=videotags.tag_id WHERE tag_name='x' AND videos.id<>'y' LIMIT 5
Dove x è uno qualsiasi dei tag dal video corrente ed y è l'ID del video corrente. (P.S. Sto usando le query parametrizzate non ti preoccupare)
Sono solo curioso di sapere come gestiresti tutto questo, forse sarebbe meglio incorporare titoli video simili?
Ecco come le mie tabelle del database sono installati:
VIDEOS TABLE
------------
video_id [PK,auto_increment] int(11)
video_name varchar(255)
TAGS TABLE
----------
tag_id [PK,auto_increment] int(11)
tag_name varchar(255)
VIDEOTAGS TABLE
---------------
tag_id [PK,FK] int(11)
video_id [PK,FK] int(11)
C'è, ovviamente, più colonne della tabella video, ma questo solo illustra il semplice molti-a-molti con chiavi primarie incremento automatico su entrambi i lati
Il sito è costruito su PHP con un database MySQL, ma che in realtà non importa :)
EDIT: C'è stato un po 'parlare di scendere un percorso organico così ho dato Pubblicherei i miei altri due tavoli che sono semi-correlati che hanno a che fare con visualizzazioni video e valutazioni video. Ora notare non ho alcuna intenzione di aggiungere più colonne specificamente al tavolo video di vista a causa di problemi di privacy (sì lo so devo conservare gli IP nella tabella dei valori nominali)
VIDEOVIEWS TABLE
----------------
video_id [FK] int(11)
view_time datetime
VIDEORATINGS TABLE
------------------
video_id [PK,FK] int(11)
ip_address [PK] varchar(15)
rating int(1)
rate_time datetime
Hah, grazie Lo pensavo anch'io^-^ –