Wyszukiwarka na glownej stronie

0

Aktualnie jestem w trakcie realizacji wyszukiwarki na glownej stronie, ktora bedzie przeszukiwala artykuly, dzial download oraz FAQ. Ta, ktora jest dotychczas nie dziala dobrze, z tego wzgledu, ze spider przeszukujacy serwis analizuje kazda strone pod katem kodu HTML, trwa to baaardzo dlugo i nie nigdy nie zdarzylo sie zeby cos nie przerwalo procesu analizy (jakis time out lub przerwanie polaczenia). Dlatego chce sie z wami podzielic aktualnymi pracami nad wyszukiwarka, moze bedziecie mieli jakies zastrzezenia.

Otoz na tym etapie sa trzy tabele:

  • coyote_keyword - lista slow znalezionych w artykulach (powyzej 1 znaku)
  • coyote_engine - numery wyrazow z tabeli coyote_keyword oraz numery stron z tabeli coyote_side na ktorych znaleziono dane slowo
  • coyote_side - URL strony, tytul strony

Poniewaz spider nie bedzie "chodzil" po kolejnych stronach i analizowal tresc HTML, zbudowanie listy slow bedzie sie opieralo na informacjach z bazy danych (np. kolumna article_content). Oto struktura tabel:

Struktura tabeli dla coyote_engine

CREATE TABLE coyote_engine (
engine_key mediumint(9) NOT NULL default '0', # numer slowa
engine_spider mediumint(8) NOT NULL default '0', # numer strony
engine_title_match tinyint(1) NOT NULL default '0', # czy slowo znajduje sie w tytule strony oraz w tresci
engine_weight smallint(6) NOT NULL default '0', # ilosc danych slow na jedna strone
KEY engine_key (engine_key)
) TYPE=MyISAM;

--------------------------------------------------------

Struktura tabeli dla coyote_keyword

CREATE TABLE coyote_keyword (
keyword_id mediumint(9) NOT NULL auto_increment, # unikalne ID slowa
keyword_keyword varchar(64) NOT NULL default '', # slowo
UNIQUE KEY keyword_id (keyword_id),
UNIQUE KEY keyword_keyword (keyword_keyword)
) TYPE=MyISAM;

--------------------------------------------------------

Struktura tabeli dla coyote_side

CREATE TABLE coyote_side (
side_id mediumint(8) NOT NULL auto_increment, # id strony (unikalne)
side_url varchar(128) NOT NULL default '', # url
side_title varchar(100) NOT NULL default '', # tytul
side_update int(11) NOT NULL default '0', # data analizy
side_length mediumint(9) NOT NULL default '0', # ilosc slow
UNIQUE KEY spider_id (side_id)
) TYPE=MyISAM;

Spider na razie dziala nastepujaco:

  1. Podaje mu tabele - np. tabela z artykulami
  2. Konstrulowane jest zaptyanie majace "wyciagnac" liste slow z tytulu artykulu oraz jego tresci
  3. Analiza tytulu oraz tresci (wycinamy czesto powtarzajace sie slowa, usuwamy znaki interpunkcyjne oraz rozdzielamy kazde slowo do tablicy)
  4. w petli sprawdzamy czy dane slowo znajduje sie juz w tabeli coyote_keyword
    4.1.) jezeli nie - dodajemy je oraz uzyskujemy ID tego slowa w tabeli
    4.2.) jezeli tak - odczytujemy ID tego slowa
  5. kolejna ieracja sprawdza, czy nastepny element tablicy to to samo slowo (czy sie powtarza)
    5.1.) jezeli tak - zwiekszmy licznik danego slowa znajdujacego sie w artykule
    5.2.) jezeli nie - dodajemy do tabeli coyote_engine ID slowka oraz ID strony a takze ilosc wystapien danego slowa na stronie oraz czy dane slowo wystepuje takze w tytule strony
  6. sprawdzamy kolejny rekord

Na razie dziala to tak sobie (w trakcie testow), klasa Spider tez jest jakas taka nijaka. URL strony takze jest generowany dynamicznie - np. jezeli mamy od czynienia z FAQ, to wiadomo, ze URL bedzie: http://4programmers.net/view_faq.php?id=[ID wskazowki]

Na pierwszych pozycjach w wyszukiwarce beda strony, w ktorych dane slowko wystepuje w temacie oraz w tresci. Drugim krytetium bedzie liczba szukanych slowek znajdujacych sie na jednej stronie.

0

Dobre Adam :) Nie moge sie doczekac nowego searchera :] Fakt, ten starszy akcje juz odwala czasami [co juz wspominalem na IRCu]... Poza tym.. blagam na wszystkie niebiosa ;-( moze sie to pojawic nawet za 3 miesiace, ale niech sie pojawi :) mianowicie taki maly combobox, w ktorym wybieraloby sie dzial w jakim chcemy szukac materialow.. Nawet nie wiesz jak to ulatwiloby prace innym [np. mnie :)] cya [cya]

0

Combobox? Osobiście proponowałbym checkboxy, bo to jest tak, że czasem chcĘ przykładowo tylko z downloadu, innym razem ze wszystkiego, a jeszcze kiedy indziej - z faq-u/artykułów/gotowców.

A tak swoją drogą, to to combo w wyszukiwarce forum jest chyba nieco nieświeże... ktoś o tym wspominał, ale problem został "zapomniany" :/
Poza tym ostatnio przejrzałem pare stron tego działu wstecz i napotkałem kilka fajnych pomysłów... dlaczego nie są one realizowane?

0

Poza tym ostatnio przejrzałem pare stron tego działu w stecz i napotkałem kilka fajnych pomysłów... dlaczego nie są one realizowane?

Ponieważ trzeba znaleźć kogoś, kto zrealizuje te pomysly... :-(

1 użytkowników online, w tym zalogowanych: 0, gości: 1