Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> slowa kluczowe
regis87
post
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 9.11.2003

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


Chcialbym stworzyc system slow kluczowych w stylu np. youtube.com, pudelek.pl (moj faworyt:P) i wielu wielu innych sajtow - duzo sie tego porobilo. W skrocie chce takiej funkcjonalnosci, zeby artykuly mialy przypisywane recznie slowa kluczowe i aby potem na podstawie slow kluczowych wyszukiwac artykuly podobne, tworzyc indeksy wszystkich artykulow z przypisanym danym slowem etc.

Platforma to mysql. Jaka strukture bazy slow kluczowych wybrac? Czy do kazdego artykulu robic jedno pole tekstowe po prostu z oddzielonymi spacjami keywordami i stworzyc na tym polu indeks fulltext, czy tez raczej zrobic wielka baze relacji id|slowo|artykul, czyli np. dla artykulu o ID 15 rekordy:
Kod
id | slowo     | artykul
---+-----------+---------
11 | pieniądze | 66
12 | biznes    | 66
13 | waluta    | 66
14 | dulary    | 66


Nieee wiem czy to nie powinno trafic do dzialu o mySQL, ale to nie jest tylko kwestia bazy - chodzi mi rowniez o to jak na platformie php potem w sposob wygodny i wydajny to obslugiwac.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
regis87
post
Post #2





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 9.11.2003

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


Zapytanie w stylu
  1. SELECT id FROM artykuly WHERE keywords LIKE '%;ZMIENNA;%'
przy obciazeniu kilkuset zapytan na minute przy bazie powiedzmy 20k rekordow zabije najpotezniejszy serwer. Tworzac na polu keywords indeks fulltext i szukajac potem po tym indeksie mozna to robic na przyslowiowym celeronie. Zapytania po indeksach zawsze beda wydajniejsze, funkcja LIKE musi przeczesac wszystkie rekordy.
Go to the top of the page
+Quote Post
Jarod
post
Post #3





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(regis87 @ 18.08.2006, 18:37 ) *
Zapytanie w stylu
  1. SELECT id FROM artykuly WHERE keywords LIKE '%;ZMIENNA;%'
przy obciazeniu kilkuset zapytan na minute przy bazie powiedzmy 20k rekordow zabije najpotezniejszy serwer. Tworzac na polu keywords indeks fulltext i szukajac potem po tym indeksie mozna to robic na przyslowiowym celeronie. Zapytania po indeksach zawsze beda wydajniejsze, funkcja LIKE musi przeczesac wszystkie rekordy.



Ok. Załóżmy, że masz książke telefoniczną. Wyszukujesz po imieniu, nazwisku, dziale czy stanowisku pracy. Chciałbyś, żeby użytkownik nie musiał wpisywać całej nazwy działu czy stanowiska tylko napisał np. dzial k a system odnajdzie mu wszystkie telefonu które pasują do tego wyrażenia, np. Dział Kadr, Dział Kontroli, Dział K... itd.

Jak to zrobisz bez LIKE ?
Go to the top of the page
+Quote Post
regis87
post
Post #4





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 9.11.2003

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


Cytat(J4r0d @ 18.08.2006, 20:42 ) *
Ok. Załóżmy, że masz książke telefoniczną. Wyszukujesz po imieniu, nazwisku, dziale czy stanowisku pracy. Chciałbyś, żeby użytkownik nie musiał wpisywać całej nazwy działu czy stanowiska tylko napisał np. dzial k a system odnajdzie mu wszystkie telefonu które pasują do tego wyrażenia, np. Dział Kadr, Dział Kontroli, Dział K... itd.

Jak to zrobisz bez LIKE ?


Po pierwsze, to jest zupelnie inny problem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Po drugie, wyszukiwanie FULLTEXT w MySQL ma mozliwosc dopelnienia (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
  1. SELECT id FROM tabela WHERE MATCH ('pole') AGAINST ('K*' IN BOOLEAN MODE)

Tylko ze nie wiem, czy w tym wypadku przewaga wydajnosciowa nad LIKE jest tak ogromna jak przy zwyklym "serczu". Ale zachecam do stosowania indeksow fulltext, moze oszczedzic wymiany sprzetu kiedy wszystko przestaje dzialac (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
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: 5.10.2025 - 08:20