Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwanie...
Forum PHP.pl > Forum > PHP > Pro > Archiwum Pro
baraqda
Witam
Jak większość z was pisze cms'a(80%). I mam tu mały problemik. Chodzi o to że pisze aktualnie wyszukiwarke, mam juz większość kodu, ale zastanawiam sie nad jedną rzeczą.
Jak wyświetlać wyniki? Mam kilka pomysłów i proszę o ocene ich, rozbudowanie bądź dodanie własnych
-Zrobić jakiś skrypt obliczający procent zgodności. Np. jesli ktoś wpisze literke: P, to: skrypt wyszuka wszędzie i jeśli znajdzie wyraz php, to będzie 1/3 zgodności czyli 33%. Chodzi o to, aby zliczał ilość literek w wyrazie i brał procent takich samych. Potem wyświetlał wyniki wobec ilości procenu danego wyrazu
-Zliczać popularność (ilość odwiedzin) każdego linku i wyswietlać wobec ilości polularnośći(takie coś stosuje WP)
-Wyświetlanie wobec id biggrin.gif (ten pomysł najłatwiejszy i najgłubszy)
Prosiłbym o wypowiedzenie sie który z pomysłów jest najlepszy(dla mnie pierwszy), rozbudowanie ich bądź podanie własnych doświatczeń w tym zakresie
spenalzo
Ja podam taki pomysł (nie napisałeś w czym ma szukać, więc na przykładzie forum):
a) ktoś wpisuje pewne słowo (minimum 3 znaki, żeby nie zajechać bazy)
cool.gif następnie w bazie zostaje sprawdzona długość danego pola, które zawiera wyraz (niekoniecznie cały, może być fragment) i przypisujemy ją do jakiejś zmiennej w sqlu.
c) sprawdzamy ilość wystąpień danego wyrazu (lub wyrazów - oddzielnie!) w całym i zapisujemy to do innej zmiennej
d) na podstawie pkt. cool.gif i c) obliczamy jakiśtam stosunek punktowy
e) sprawdzamy, czy czasem nie występuje cała szukana fraza (teraz sprawdzamy wyrazy razem) w temacie posta za co dajemy X punktów lub Y punktów jezeli występuje dana fraza w nazwie tematu.
f) na koncu wynik z tego zapytania przekazujemy do php, sortujemy wg uzyskanego stosunku punktowego po czym wyświetlamy :-)
halfik
Jak już się bawić to na całego winksmiley.jpg
W bazie możesz mieć opisy składające się np. ze słów, które osiągnęły wymagany próg kwalifikacji. Ten próg to tzw. waga słowa: czyli zliczasz ile razy występuje ono i jego odmiany w tekście, dzielisz to przez ilość wszsytkich słów w danym tekście, a potem mnożysz przez 100% - i teraz np. słowa, których waga jest >= 5% idą do opisu, a wyszukiwania robisz tylko po opisie, przy okazji można zaimplementowac jakiś mechanizm zgodności wyników z tym czego szuka user - tutaj można sporo powymyslać.

Aha: jak zliczasz ilość wystąpień każdego słowa, musisz pominąć te mało istotne dla tesktu (np.a, by, ale, w), w związku z czym implementuje się tzw. listę stopu - i nim słowo zacznie być zliczane itd. sprawdzane ejst czy czasem nei ma go na liście stopu.


A co do Twojego pomysłu nr 1. A czy warto się z tym tak mordować? jeśli user umie się posługiwac wyszukiwarką, to da rade bez tego. Ew. można poabić się jeszcze i ustalić liste słów pokrewnych, tak że jeśli np. user szuka "php", to system wie, że on może też byc zainteresowany ASP, JAVA itd. i do tych pokrewnych tez można ustalić sobie wagi itd. można naprawdę całkiem sporo namieszac przy systemach wyszukiwania, ale pytanie czy jest powód aby się tak namęczyć?
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.