![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 496 Pomógł: 2 Dołączył: 15.07.2011 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Zrobiłem sobie pewien algorytm rekomendacyjny, który wyświetla dane na podstawie podobieństwa użytkowników. Najpierw za pomocą pewnej metryki oblicza dla kazdego użytkownika wyniki, następnie sortuje wyniki na podstawie uzyskanych wyników i na końcu wybiera 5ciu użytkowników z nawiększymi wynikami , którzy są w tym momencie najbardziej podobnymi do użytkownika zalogowanego. Mając taką grupę 5ciu użytkowników wybierane są dane, które wybierali wcześniej oni, natomiast nie wybierał ich wcześniej zalogowany użytkownik. I tak jeśli w bazie znajduje się 476 użytkowników to wyniki w toolbarze mam następujące: DB Queries: 956 Query time: 218,98 ms Invalid entities: 10 Czy ilość zapytań : 956 , przy tylu użytkownikach, przy takim algorytmie jest normalna ? Proszę o podpowiedź co w toolbarze znaczy: Invalid entities 10 . Co mogę mieć źle ? dzięki |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Liczba zapytań jest bardzo duża, nie widzę kodu ani algorytmu, ale prawodpodobnie da się ją zmniejszyć o rząd wielkości.
Przykład: Doctrine standardowo używana tzw. lazy loading, więc załóżmy że Twoi użytkownicy mają jakąś relację z inną encją X. Pobierając normalnie 10 użytkowników i wyświetlając ich dane razem z danymi z encji X zostanie wykonanych tak naprawdę 11 zapytań (1 do pobrania użytkowników i po 1 na użytkownika do pobrania danych X). Rozwiązaniem zmniejszającym ilość zapytań jest dopisanie własnej metody do repozytorium korzystającej z query buildera (w powyższym przypadku trzeba samemu zjoinować tabele). Ten post edytował redeemer 3.08.2013, 10:18:40 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 05:05 |