Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] System tagów - struktura, wyszukiwarka
Riggs
post
Post #1





Grupa: Zarejestrowani
Postów: 162
Pomógł: 13
Dołączył: 16.06.2007

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


Witam!
Otóż w moim projekcie mam zaimplementować system tagów (czyli wyszukiwanie rekordów po słowach kluczowych). Założyłem, że będzie je wprowadzał użytkownik. Problem pojawia się w implementacji gdyż jeszcze czegoś takiego nie potrzebowałem. Mam 2 koncepcje na to:
1) Tagi przechowywane w polu tekstowym i wyszukiwanie jako " LIKE '%tekst_taga%'";
2) Każdy tag wrzucać do tabeli "tagi" i łączyć artykuł z danym tagiem w tabeli zliczeniowej;

Które rozwiązanie jest lepsze zarówno pod względem wydajności jak i "profesjonalności" kodu?

Szukałem na forum podobnych tematów ale znalazłem tylko proste wyszukiwarki tekstowe które nie są wystarczające dla mojego problemu.

Z góry dzięki za odpowiedź.
Pozdrawiam
Go to the top of the page
+Quote Post
.radex
post
Post #2





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

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


Ja bym zrobił w pewnym sensie połączenie obu tych sposobów - pole z tagami dla np. newsa i pole z np. newsami dla tagów - ułatwi to szukanie po bazie.


--------------------
blog | Tadam — minutnik do Pomodoro na Maka :)
Go to the top of the page
+Quote Post
Shili
post
Post #3





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


@up
Przykład jest chybiony, jeśli dla newsa będzie więcej niż jeden tag, jeśli natomiast po jednym do newsa, to faktycznie najlepsze rozwiązanie. Przy kilku tagach bez dodatkowego pola niewiele się zrobi (wiele do wiele bądź co bądź)

Ja jednak utworzyłabym osobną tabelę, jeśli natomiast do jednego newsa można dodać wiele tagów, to oczywiście dwie osobne tabele. A tak naprawdę co jest bardziej wydajne możesz spokojnie sprawdzić - zlicz na jakichś przykładowych danych, który sposób wykonuje się szybciej. Mam wrażenie, że nie ta opcja z like, like bowiem jest dość mało wydajne i wolno działające.

Ten post edytował Shili 25.05.2008, 18:43:51
Go to the top of the page
+Quote Post
Riggs
post
Post #4





Grupa: Zarejestrowani
Postów: 162
Pomógł: 13
Dołączył: 16.06.2007

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


Zapomniałem dodać że do każdego newsa może być wiele tagów.

Z "LIKE" też wydaje mi się mało wydajne gdyż z reguły operacje na polach typu "TEXT" w MySQL nie są chyba szybkie.
Go to the top of the page
+Quote Post
Moli
post
Post #5





Grupa: Zarejestrowani
Postów: 662
Pomógł: 45
Dołączył: 26.03.2007
Skąd: Warszawa

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


Zrób tabelę tagi np.
Kod
ID | TAG

i tabele łaczenia np.
Kod
NEWS ID | TAG ID


W taki sposób można przypisać do jednego newsa wiele tagów. Wyszukiwanie możesz zrobić w taki sposób, że pobierasz z tabeli laczenia wpisy w ktorych tag = wyszukiwany tag i pobierasz newsy do tego tagu. Można to zrobić jednym zapytaniem smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 09:08