Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwarka na forum
Forum PHP.pl > Forum > PHP
tomahawk
Witam!

Piszę własny skrypt forum.

Właściwie została mi już tylko wyszukiwarka i naprawienie paru błędów.

Nie mam żadnego pomysłu.

Zwykłe 'surowe' zapytania z LIKE do bazy w której jest dużo postów zabiera strasznie dużo mocy procka.

Oglądałem różne inne skrypty forum i zauważyłem że każdy ma jakieś skomplikowane te wyszukiwarki...
Np. jest odzielna tabela dla wyszukiwanych słów (tzw. search history) i z tym się coś "je" ale nie zagłębiałem się zabardzo w kody skryptów bo niewiem czy to będzie właściwe rozwiązanie.

Jak proponujecie zrobić tą wyszukiwarkę?
matix
Dodaj FULLTEXT do tytułów i body i wykorzystaj wyszukiwanie pełnotekstowe, tj:

  1. SELECT posts.id, MATCH(body) AS score AGAINST ('szukane') FROM posts UNION SELECT topic.id, MATCH(title) AS score AGAINST ('szukane') FROM topic


Pozdrawiam =)
bim2
Napisz dokłądniej w czym będziesz szukal, czy to będzie teskt czy jak? Ile tego tekstu bedzie.
Ja robie osobną tabele
| FRAZA | ID |
i w niej zapisuję każdy osobny wyraz i link do treści. W trakcie dodania treści dodaje się FRAZA np. dla
"Lubię kofane koty" doda się
LUBIE | 1
KOFANE | 1
KOTY | 1

1 to id treści smile.gif
tomahawk
@matix
Nie rozumie za bardzo tego co napisałeś... ale może to rozgryzę...

@bim2
No będę szukał w postach i/lub nazwach tematów. A wyświetlał będę tylko wg. tematów

Nie wiem czy dobrze to rozumiem ale tobie chodzi oto że jak dodaje posta to dziele tego posta na frazy i poszczególne frazy zapisuję do bazy wraz z id tematu, a potem jak znajdzie tę frazę to pobieram id tematu dla tej frazy u wyświetlam temat?

Cóż tak jest chyba w większości skryptów for ale przecież jeśli takie coś zastosuje to ta tabela z frazami będzie miała miliony rekordów gdy postów będzie zaledwie kilkaset tysięcy.
bim2
Dlatego pytałem co będziesz szukał smile.gif, ale jeśli boisz się LIKE to innego rozwiązania nie znam. I tak mniej to zarżnie baze niż like, ale wielkość niemiłosierna chyba, że dasz np VARCHAR(60) i te dłuższe wyrazy skróci :)albo zapisujesz frazy po przecinku i bedziesz usuwał 2 literowe i 1 literowe wyrazy. Wtedy nadal zostaje like, ale już tyle szuakć nie musi?
"Ala lubi koty!!!!!!!
Co ty sobie myslisz?questionmark.gif!?exclamation.gif!!!"
Ala,lubi,koty,sobie,myslisz
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.