Cytat(Plikownik @ 2006-01-19 21:16:38)
Problem tkwi w tym, że nie wiem jak mam zrobić, żeby wyniki były posortowane według liczby słów kluczowych od tych z największą ilością do tych z najmniejszą ilością.

IMHO ilość wystąpień słowa jest mało interesująca. Chyba, że jest to jakaś specjalna wyszukiwarka. Najlepiej zastosuj funkcje wbudowane w bazę danych do ustalania które wyniki powinny być wyświetlane jako pierwsze.
Proponuję wzbogacenie wyszukiwarki o następujące mechanizmy:
1) Filtruj zapytania pod kątem dziwnych znaków.
2) Minimum 3 litery, maksimum 5-6 wyrazów (reszta ignorowana).
3) Rozdzielaj słowa w zapytaniu. W obecnej wersji po wpisaniu np. 'marek jurek' wyszukiwarka znajdzie tylko marszałka sejmu, nie pokaże natomiast innych stron z tymi słowami. A chyba nie tego oczekuje użytkownik.
4) Kolejność wyszukiwania:
- strony, które zawierają wszystkie słowa koło siebie
- strony, które zawierają wszystkie słowa, ale oddalone od siebie
- strony, które zawierają część słów kluczowych (im mniej tym gorzej)
Słowa, czyli po obu stronach nie ma innych literek i cyferek, tylko spacje, taby, kropki, myślniki, itp.
5) Jeśli pierwsze wyszukiwanie nie przyniosło rezultatów, szukaj części słów, czyli właśnie '%fraza%', potem kombinacje '%słowo_1%' AND '%słowo_2%' [...] a na koniec '%słowo_1%' OR '%słowo_2%' OR [...]. Dzięki temu znajdziesz zakaMAREK, koszMAREK, itp. Moim zdaniem lepiej pokazać, że wyszukiwarka się stara niż wywalić 'znaleziono 0 pasujących stron'.
Punkt czwarty i piąty można zrealizować jednym zapytaniem, stosując UNION i zapytania w odpowiedniej kolejności (eliminujące duplikaty). Konstrukcja zapytania może być czasochłonna, dlatego proponuję je cache'ować w zmiennej sesji.