Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pobieranie użytkowników na podstawie tagów
Athlan
post
Post #1





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

Ostrzeżenie: (0%)
-----


Witam,

posiadam tabelę tagów, która wygląda następująco:
  1. CREATE TABLE `cms_messages_tags` (
  2. `tag_name` varchar(255) NOT NULL,
  3. `tag_message` int(11) NOT NULL,
  4. `tag_user` int(11) NOT NULL,
  5. KEY `tag_name` (`tag_name`),
  6. KEY `tag_user` (`tag_user`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;


Pobranie najpopularniejszych tagów użytkownika nie jest problemem:
  1. SELECT COUNT(tag_name) AS tag_times, tag_name FROM `cms_messages_tags`
  2. WHERE tag_user = 3 GROUP BY tag_name ORDER BY tag_times DESC LIMIT 0, 30


Chciałbym pobrać 30 użytkowników, którzy piszą najbardziej zbliżoną treść do użytkownika X na podstawie występowania tagów. Na pewno pomoże mi w tym powyższe zapytanie, aby na podstawie jego wyniku opracować listę tych użytkowników. Nie mam pomysłu jak to ugryźć, wszelkie rady mile widziane.

Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nexis
post
Post #2





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


Na podstawie podane przez ciebie zapytania otrzymasz mniej więcej taki wynik:

Kod
45 PHP
32 MySQL
13 Java
6  Perl
3 Python
1 Linux
1 Windows


Na podstawie tej listy powinieneś, moim zdaniem, pobrać 30 użytkowników dla każdej wartości, czyli:
  1. SELECT COUNT(`tag_name`) AS `tag_times`, `tag_user` FROM `cms_messages_tags` WHERE `tag_name` = 'PHP' GROUP BY `tag_user` ORDER BY `tag_times` DESC LIMIT 30

  1. SELECT COUNT(`tag_name`) AS `tag_times`, `tag_user` FROM `cms_messages_tags` WHERE `tag_name` = 'MySQL' GROUP BY `tag_user` ORDER BY `tag_times` DESC LIMIT 30

itd.

A następnie scalić powyższe wyniki, mnożąc jednocześnie otrzymane współczynniki, aby dla najpopularniejszych tagów użytkownika X, znaleźć również najbardziej zbliżonych użytkowników. Na sam koniec wystarczy posortować tablicę i gotowe.
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: 10.10.2025 - 10:00