Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wyszukiwanie tagów na podstonach, (Bardzo raczkujący, pełen zapału)
Nazad
post
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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mortus
post
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.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 31.12.2025 - 18:12