• 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

VPS Starter Arubacloud
0 głosów
170 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ź 164 wizyt
pytanie zadane 15 października 2023 w SQL, bazy danych przez Piotrek2713 Mądrala (5,500 p.)
0 głosów
1 odpowiedź 373 wizyt
pytanie zadane 10 czerwca 2022 w SQL, bazy danych przez exnc Nowicjusz (120 p.)
0 głosów
1 odpowiedź 260 wizyt

92,959 zapytań

141,921 odpowiedzi

321,152 komentarzy

62,293 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.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...