Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 16.04.2010 Ostrzeżenie: (0%)
|
Witam serdecznie! Jest to mój pierwszy post, choć od dawna korzystałem z pomocy udzielonej tutaj innym.
Tym razem nie znalazłem odpowiedzi na mój problem (możliwe że przez fakt, że nie wiedziałem jak zapytać). Postawiono przede mną zadanie napisania tag cloud'a, który wyszukiwał by słowa zawarte w <div class="keywords">, następnie porządkował je według częstotliwości występowania. Problem jest taki, że podstron jest pewnie ponad 2000, a na każdej kilka keywordów. Bardzo chciał bym przedstawić Wam napisany przeze mnie kod, niestety moja wiedza z zakresu PHP pozwoliła mi jedynie na bezproduktywne poszukiwania w google. Jeśli ktoś był by w stanie pchnąć mnie w odpowiednim kierunku będę bardzo wdzięczny! Pozdrawiam! PS. Przeczytałem wymogi odnośnie postowania, starałem się udzielić tyle informacji ile mogłem. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%)
|
Pewnie się da, bo przecież w PHP możemy wylistować tabele w danej bazie danych, a nawet same bazy danych. Później należałoby się poruszać po odpowiednich tabelach (bazach) z listy i dla każdej tabeli wykonywać takie samo zapytanie. Wynik dopisywać do naszych keyword-ów. Nie wiem jaka będzie wydajność, ale podejrzewam, że mizerna. Pseudokod:
1. pobieramy z serwera listę baz danych (oczywiście do każdej musimy mieć dostęp), możemy do tego wykorzystać mysql_list_dbs(), przechodzimy do punktu 2, 2. poruszając się po wynikach uzyskanych w pierwszym punkcie wykonujemy: 2a. sprawdzamy, czy nasza baza danych to baza danych czasopisma (np. baza taka może się charakteryzować przedrostkiem czasopismo_, jeśli więc nazwa kolejnej bazy danych zawiera przedrostek czasopismo_, to znaczy, że z tej bazy musimy pobrać dane, przechodzimy do punktu 2b, 2b. łączymy się z tą bazą danych poprzez mysql_select_db(), przechodzimy do punktu 2c, 2c. wykonujemy odpowiednie zapytanie, a wyniki przetwarzamy tak, jak już wspomniałem i zapisujemy do tablicy słów kluczowych (tagów), przechodzimy do punktu 2d, 2d. jeśli była to ostatnia baza danych czasopism, to kończymy działanie i przechodzimy do punktu 3, jeśli nie to wracamy do punktu 2a, 3. zliczamy wartości w tablicy słów kluczowych - array_count_values() i sortujemy od największej do najmniejszej - arsort(). W taki oto sposób otrzymaliśmy listę wszystkich tagów występujących we wszystkich artykułach każdej bazy danych czasopism, posortowanych według popularności. Teraz pozostaje tylko kwestia wyświetlania. Powyższy algorytm można zrealizować w 21 czytelnych linijkach w czasie 20-30 minut. Pozostaje kwestia wydajności. Przy dużych bazach danych może być z tym problem. |
|
|
|
Nazad [PHP]Wyszukiwanie tagów na podstonach 16.04.2010, 09:41:32
mortus Ważną rzeczą jest również sposób generowania tych ... 16.04.2010, 09:55:43
Nazad Dziękuję za szybki odzew i przepraszam za niezawar... 16.04.2010, 10:01:57
mortus Oczywiście. Dane można wyciągnąć za pomocą kilku, ... 16.04.2010, 10:22:47
Nazad Nie do końca
Chodzi o to, żeby największe były t... 16.04.2010, 10:29:55
mortus No ale tagi są podpinane pod konkretne artykuły? C... 16.04.2010, 10:43:09
Nazad Każdy artykuł jest opisany następującymi "rub... 16.04.2010, 10:51:32
mortus No widzisz, już jakieś konkrety. Teraz jeszcze trz... 16.04.2010, 10:56:25
Nazad Tutaj akurat wszystko wygląda prosto, są to słowa ... 16.04.2010, 11:01:47
mortus Da się, podejrzewam, że pole references w artykuła... 16.04.2010, 11:12:28
Nazad Niestety, references to tylko pole do wstawienia b... 16.04.2010, 11:15:43
mortus To w jaki sposób artykuły są przypisane do czasopi... 16.04.2010, 11:16:52
Nazad Opiszę to obrazowo (bo inaczej nie umiem )
Kiedy ... 16.04.2010, 11:21:18
mortus Jeżeli czasopisma są tabelami w bazie danych, to j... 16.04.2010, 12:10:15
Nazad Bardzo dziękuję za Twoją pomoc! Nie spodziewał... 16.04.2010, 12:15:22 ![]() ![]() |
|
Aktualny czas: 31.12.2025 - 18:12 |