• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Proponowanie filmów z bazy danych

Object Storage Arubacloud
0 głosów
161 wizyt
pytanie zadane 19 grudnia 2017 w SQL, bazy danych przez arek01996 Stary wyjadacz (12,100 p.)
Witam,

Zastanawiam się w jaki sposób serwisy typu cda.pl czy youtube wybierają filmy które wyświetlają się po prawej i są zazwyczaj czymś związane z aktualnie oglądanym filmem.

Próbowałem to zrobić w taki sposób, że używałem algorytmu "levenstain" i pobierałem z bazy kilka wyników z najlepszymi wynikami ale taki algorytm trwa ponad 5 sekund więc jest niesamowicie niewydajne.

Jakieś propozycje?

Pozdrawiam

1 odpowiedź

0 głosów
odpowiedź 19 grudnia 2017 przez Assasz Nałogowiec (30,460 p.)
Najłatwiej jest to zrobić za pomocą tagów - pobierasz z bazy filmy czy co tam chcesz i sortujesz je według liczby wspólnych tagów z aktualnie otwartym filmem - jeśli tych tagów nie ma, albo kilka wyników ma taką samą liczbę, dobierasz np. po podobnym tytule czy autorze. Przynajmniej ja tak robię ;)
komentarz 21 grudnia 2017 przez arek01996 Stary wyjadacz (12,100 p.)
W jaki sposób mogę sortować według tagów?
komentarz 22 grudnia 2017 przez Assasz Nałogowiec (30,460 p.)

Np. tak:

SELECT m.*, SUM(CASE WHEN t.id IN (:tags) THEN 1 ELSE 0 END) AS tags_num 
FROM movie m, tag t ... ORDER BY tags_num DESC LIMIT 10

:tags to zbiór id tagów aktualnego filmu. Zapytanie to będzie zliczać liczbę wspólnych tagów, a następnie posortuje i wybierze 10 wyników z największą liczbą. 

komentarz 10 stycznia 2018 przez arek01996 Stary wyjadacz (12,100 p.)
Nie potrafię zrozumieć Twojego zapytania, niby jestem po studiach, ale byłbym wdzięczny o jakieś rozwinięcie
komentarz 10 stycznia 2018 przez Assasz Nałogowiec (30,460 p.)
Czego dokładnie nie rozumiesz, klauzuli case? Zapytanie zlicza liczbę wspólnych tagów w następujący sposób: jeśli dany tag znajduje się w puli tagów aktualnego filmu, to dodaj go do sumy, w przeciwnym razie pomiń. Następnie wyniki są sortowane po sumie tych tagów (tags_num) malejąco, aby wyniki z największą sumą były na samej górze, a na koniec zostają wybrane 10 najlepszych wyników (limit 10).

Oczywiście jest to jedynie szkielet zapytania i trzeba go dopasować do swoich potrzeb.

Podobne pytania

0 głosów
1 odpowiedź 149 wizyt
pytanie zadane 15 października 2023 w SQL, bazy danych przez Piotrek2713 Mądrala (5,340 p.)
0 głosów
1 odpowiedź 296 wizyt
pytanie zadane 10 czerwca 2022 w SQL, bazy danych przez exnc Nowicjusz (120 p.)
0 głosów
1 odpowiedź 228 wizyt

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...