Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Jak powstają ilości w nawiasach przy tych parametrach?
Forum PHP.pl > Forum > PHP
kukix
Witam.

Ostatnio zastanawiałem się nad budowa takich serwisów jak ceneo lub innych dużych serwisów..

Jak oni wyliczają dla każdego przypadku ilośc produktów dl;a danego parametru?

Proszę wejśc np na link: http://www.ceneo.pl/Telewizory_LCD;017P0-2...7331-277334.htm.

Na wyszukwiarce zaawansowanej są w nawiasach ilości produktów z danym parametrem. Ilośc ta zmienia się jak zaznaczymy jakiś parametr.
Jeżeli by dla każdej opcji wykonac obliczenie ile jest produktów dla takiedo przypadku, to trzeba by wykonac z 50 zapytań na takiej ogromnej bazie przy każdym wyświetleniu serwisu.


Jak oni to ogarniają?

Ktoś kiedyś spotkał się z takim mechanizmem?
johny_s
moga sobie przygotowac wczesniej takie dane i trzymac je w cache albo maja jakies specjalistyczne oprogramowanie. U nas w firmie mamy aplikacje w cepie napisana do takich rzeczy.
kukix
Cytat(johny_s @ 7.12.2011, 02:32:16 ) *
moga sobie przygotowac wczesniej takie dane i trzymac je w cache albo maja jakies specjalistyczne oprogramowanie. U nas w firmie mamy aplikacje w cepie napisana do takich rzeczy.

Tak, tylko, że przy 50 parametrach, jest to mase kombinacji.. wybranie np przekątnej 42 cale wpływa na wszystkie inne parametry..

A czy ta aplikacja przygotowuje wszystkie takie kombinacje parametrów i wstawia je do plików z tablicą?
Crozin
Być może przy wyszukiwaniu pobierane są również informacje na temat atrybutów znalezionych produktów? Pobranie tego typu danych z nierelacyjnej bazy danych nie powinno być specjalnie obciążające - zresztą z relacyjnej również nie musiałoby być, nie wiem skąd wytrzasnąłeś 50 zapytań.
nospor
Ja robiłem tego typu skrypt i nie robiłem tam 50 zapytań. Robiłem to jakiś czas temu i nie pamiętam dokładnie algorytmu, który zastosowałem.
Kojarzę natomiast, że liczba zapytań mogła być równa liczbe grup parametrów.
Czyli jeśli było 50 parametrów to np. mieściły się one w 5 grupach. Wówczas miałem 5 zapytań.
kukix
Cytat(Crozin @ 7.12.2011, 02:17:21 ) *
Być może przy wyszukiwaniu pobierane są również informacje na temat atrybutów znalezionych produktów? Pobranie tego typu danych z nierelacyjnej bazy danych nie powinno być specjalnie obciążające - zresztą z relacyjnej również nie musiałoby być, nie wiem skąd wytrzasnąłeś 50 zapytań.


50 zapytań, ponieważ trzeba dla każdego przypadku policzyć ile jest tych produktów.

Cytat(nospor @ 7.12.2011, 09:04:09 ) *
Ja robiłem tego typu skrypt i nie robiłem tam 50 zapytań. Robiłem to jakiś czas temu i nie pamiętam dokładnie algorytmu, który zastosowałem.
Kojarzę natomiast, że liczba zapytań mogła być równa liczbe grup parametrów.
Czyli jeśli było 50 parametrów to np. mieściły się one w 5 grupach. Wówczas miałem 5 zapytań.


Rzeczywiście zapytanie dla każdej grupy to już sporo mniej, ale podejrzewam jednak ,ze to zapytanie jest dosyć rozbudowane tak więc wydajnościowo niewiele lepiej. :/
nospor
Cytat
ale podejrzewam jednak ,ze to zapytanie jest dosyć rozbudowane tak więc wydajnościowo niewiele lepiej. :/
Widzisz, tylko podejrzewasz... smile.gif
Crozin
Zapytanie wcale nie musiałoby być jakieś strasznie skomplikowane. Załóżmy, że informacje o atrybutach / właściwościach produktu są przechowywane w jakimś tam modelu EAV, czyli że mamy tabelę z kolumnami: product_id, attribute_id, attribute_value_id.
Wyszukując produkty na podstawie kryterium: producent (atrybut): Sony (wartość), przekątna (atrybut): 42", 44" (wartości) musimy pobrać jedynie identyfikatory tych produktów, które w tabeli EAV-u spełniają te kryteria. Relacyjne bazy danych są całkiem dobrze przygotowane do obsługi tego typu zapytań.
Następnie mając już identyfikatory wszystkich znalezionych produktów, pobieramy je wraz z ich wszystkimi atrybutami (czy tam jedynie pewnymi atrybutami - ogólnymi (cena, producent) i powiązanymi z kategorią (przekątna ekranu, kontrast)). Teraz możemy łatwo zliczyć jaki atrybut, z jaką wartością wystąpił ile razy. Pobrane dane można bardzo łatwo zapisać w cache'u na poczet przyszłych wyszukiwań czy kolejnych stron wyników.

Jakoś bardzo obciążające to być wcale nie musi.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.