ďťż

[php][mysql]Wyszukiwarka Jak najlepiej

       

Podstrony


telcocafe

Wł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;)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.