![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: 27.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dzieńdoberek,
Ostatnio dyskutowaliśmy sobie na temat "tagowania" materiałów. Doszliśmy że zrobimy osobną tabelę, w niej podamy "własciciela","identyfikator artykułu","tag". Plus oczywiście data która ma nam umilić zarządzanie. Wpadłem trochę w tarapaty ponieważ patrzę na projekt i myslę, upsss, jest problem. PODOBNE ARTYKUŁY bazując na tagach. No super, tylko jak się za to zabrać (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) Selektem możemy wyciągnąć tagi przypisane do danego artykułu. dostaniemy powiedzmy ala ma kota białego (IMG:http://www.bankfotek.pl/thumb/266805.jpeg) I kurcze, jak teraz zrobić do tego "podobne" To jest pytanie, za 100 punktów. Jasnę, można zrobić SELECT xxx FROM xxx WHERE xxx LIKE '%tag1% AND LIKE '%tag2%' Ale, co mi to kurcze da ? Chyba nie posegreguje mi danych według tendencji rosnącej czyli najpierw materiały mające najwięcej "takich" tagów, potem te które będą miały tylko jeden tag ? Koncepcja, przydała by się koncepcja. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 7 Dołączył: 14.06.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
1. Poczytaj o group by w SQLu
2. selectuj z artykuł, daj JOIN tag_artykul |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: 27.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Po przeczytaniu wielu stron tekstu, wracam wyposażony w pewien kod. Kod który winnien działać, lecz nie działa. Tj działa, ale dla tekstów >= 4 znaki. Konfiguracja serwera SQL poprawna, poniżej screen (IMG:http://www.bankfotek.pl/thumb/267770.jpeg) min_word_length -> 3 znaki
Kod zwraca 0 Dla porównania: WHERE (IMG:http://www.bankfotek.pl/thumb/267774.jpeg) Kod powyższy, który nie działa, w momencie kiedy użyje 4 znakowego kodu, rusza poprawnie. Przyznam się szczeże że nie wiem czego to jest wina. Serwe mySQL wydaje się interpretować zapis odnośnie minimalnej ilości znaków, jednakże czemu nie chcę przeszukiwać tych 3 znaków ? Czy nie macie Państwo jakiejs podpowiedzi ? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 3 Dołączył: 17.05.2004 Skąd: Nowhere Land Ostrzeżenie: (0%) ![]() ![]() |
http://dev.mysql.com/doc/refman/5.1/en/ful...ine-tuning.html
Przeczytaj sobie to, co tam jest napisane. Co do długości interesują Cię zmienne ft_min_word_len i ft_max_word_len. Sprawdź sobie też stopwords. Pozdrawiam |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: 27.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Racja, zapomniałem repair table.
Teraz działa. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 7 Dołączył: 14.06.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Ja bym te podobne tak zrealizował:
pobierasz artykuł (powiedzmy że ma id 13) pobierasz tagi danego artykułu (powiedzmy 1 i 2) Kod SELECT a.*, COUNT(a.id) as cnt FROM artykul a
JOIN artykul_tag at on (a.id = at.a_id) WHERE at.t_id IN (1, 2) // tutaj dajesz tagi wybranego artykulu AND a.id != 13 GROUP BY a.id HAVING cnt > 0 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 16:45 |