ďťż
Podstrony
|
telcocafeWłaśnie myślę nad skryptem wyszukiwarki opartym o php i mysql. Chciałbym żeby po wpisaniu kilku słów w szukajke, na górze wyników byłyby te wpisy, które zawierają tych słów jak najwięcej, czyli są najdokładniejsze. Mam pewnego pomysła, ale jest to chyba nieoptymalne:Najpierw rozbijam frazę na wyrazy i wyszukuję wszystkie wpisyw mysql, które zawierają choćby jeden z tych wpisów i zwracam je do tablicy, a potem wyszukuję wśród nich te, które mają słów najwięcej (sprawdzanie za pomocą strstr i zwiekszanie licznika). Następnie sortuję tablice wg liczby wystapień i wyświetlam. Raczej to nie jest optymalne rozwiązanie (chyba :) ) więc pytam sie czy ktoś z Was ma lepszy pomysł na zbudowanie takiej wyszukiwarki? Użytkownik mmatheww edytował ten post 26 maj 2006, 20:47 sqlite jest znaaacznie szybsze przy szukaniu wyników. Wyszukiwarka na php.net korzysta właśnie ze sqlite ;) z drugiej strony przydaje się ILIKE czyli niewrażliwe na wielkość znaków LIKE. W postgresie to jest, w sqlite chyba nie. W postgresie to jest, w sqlite chyba nie. Że LIKE to wiem, troche sie w tym temacie jednak obracam ;p Troche nie zrozumieliście mnie. Chodzi mi o sam 'algorytm' szukania. Tak, żeby te 'najlepsze' wyniki były na górze. Więc na razie mam to tak - szukam po kolei słów w bazie, do każdego znalezionego rekordu robię tablicę z jego id i z ilością słów znalezionych, którą zwiekszam przy znalezieniu w rekordzie kolejnego słowa. Potem sortuję tablicę (tyl, że jest ona wielowymiarowa, z czym mam problem - http://forum.ks-eksp...showtopic=84084). Następnie wybieram powiedzmy 20 wpisów na strone i dopiero pobieram dane z bazy. Czy ma ktoś pomysł na taki algorytm, lub modyfikację mojego? Także pomoc mi sie przyda w tatym topiku o sortowaniu. ja w mojej wyszukiwarce przyjałem taki (własnego pomysłu;P) algorytm: - rozbijam fraze na poszczegolne słowa - pobieram z tabeli te zapytania, które maja w sobie ktores ze szukanych słów - i teraz dla kazdego wyszukanego wyniku z tabeli i dla kazdego slowa z query: + jesli dane znajduje sie w tytule artykulu np. +100pkt + za kazde wystapienie slowa w tresci np. +5pkt mozna jeszcze skrocic wyraz np. o dwie litery i szukac tego (oczywiscie przyznawac mniejsza liczbe punktow i pozniej punkty kazdego wyniki sortuje i mamy 'trafnosc' wyniku;) ja w mojej wyszukiwarce przyjałem taki (własnego pomysłu;P) algorytm: - rozbijam fraze na poszczegolne słowa - pobieram z tabeli te zapytania, które maja w sobie ktores ze szukanych słów - i teraz dla kazdego wyszukanego wyniku z tabeli i dla kazdego slowa z query: + jesli dane znajduje sie w tytule artykulu np. +100pkt + za kazde wystapienie slowa w tresci np. +5pkt mozna jeszcze skrocic wyraz np. o dwie litery i szukac tego (oczywiscie przyznawac mniejsza liczbe punktow i pozniej punkty kazdego wyniki sortuje i mamy 'trafnosc' wyniku;) |
|||
Sitedesign by AltusUmbrae. |