Napisałem to dla blog miałem dawno, kiedy… nie ma go już w sieci, więc… jest! :
Jak napisać wyszukiwarkę
Darren Rowse na probolgger.net prowadzi projekt pisania grupowego na temat „Jak to zrobić”. To jeden z niewielu blogów, które regularnie czytam, więc zastanawiam się, dlaczego nie napisać czegoś wartego przeczytania dla odmiany, a raczej moją standardową brutalną tyradę, w której w końcu zagrozę dźgnięciem Hugo Chavesa w gardło.
Zdecydowałem się napisać „Jak napisać wyszukiwarkę”. Wybrałem ten temat z dwóch powodów:
- W sieci nie ma zbyt wielu dobrych informacji na ten temat.
- Obecnie piszę jeden z nich dla jednego z moich klientów.
Mój klient jest znaczącym sprzedawcą online, więc nie przeszukuje całej sieci tylko w jego witrynie, a dokładniej tylko w produkty do sprzedaży w ich witrynie. Niemniej jednak te same techniki mogą być użyte do napisania bardziej złożonej metody używanej do przeszukiwania Internetu. Wiem, że to nie jest blog techniczny, więc nie będę zagłębiał się w szczegóły techniczne, ani nie będę omawiać wymagań dotyczących sprzętu, mocy obliczeniowej ani indeksowania sieci.
Używam dość prostej techniki , Mam tabelę (tblKeywords) z trzema polami:
- Itemid (jeśli wyszukujesz w sieci, będzie to adres URL)
- KeyWord (Indexed Keyword)
- Waga (jest to wartość liczbowa od 1 do 100, im wyższa liczba, tym ważniejsze (waga) ma słowo kluczowe) * PK = ItemID + KeyWord
Pierwszą rzeczą, jaką robię, jest zbieranie pojedynczych słów z dowolnego odpowiedniego miejsca. Dla mojego klienta wyciągnę słowa z tabeli produktów. W szczególności z pól Itemid, ItemName, ItemShortDescription, ItemLongDescription, Producent, ProducentSKU, Kategoria1, Kategoria2, Kategoria3 ect. Jeśli indeksujesz strony internetowe, możesz pobrać dane z tekstu strony, tytułu strony, adresu URL lub linków na innych stronach, które odsyłają do indeksowanej strony.
Wartość wagi zależy od tego, skąd pochodzi słowo kluczowe . Na przykład w moim przypadku kod SKU „produkcji” pozycji miałby wagę 100, podczas gdy słowo z nazwy elementu może mieć wagę 25. Słowo z ItemLongDescription może mieć wagę 5. Jeśli indeksujesz na stronach internetowych słowa z tytułu strony mogą mieć wagę 75, podczas gdy pogrubione słowo z tekstu strony może mieć wagę 10. Jeśli słowo zostanie powtórzone więcej niż jeden raz lub \ i w więcej niż jednym miejscu, należy dodać waga za każdym razem, gdy występuje. Na przykład Jeśli słowo „koszula” pochodzi z dwóch miejsc dla ItemId = 12345, ItemName (waga 25) i pojawi się dwukrotnie w ItemLongDescription (waga 5 x2 = 10), słowo „koszula” będzie miało całkowitą wagę 35 dla ItemId = 12345.
Jeśli ktoś wyszuka hasło „różowa koszula”, przeszukuję tabelę pod kątem wszystkich wystąpień słów „różowy” lub „koszula” i sumuję wagi. Wyświetlam na górze elementy o największej masie całkowitej.
SQL:
Select Itemid, sum(weight) as totWeight from tblKeywords group by itemId having keyword in ("pink","shirt")
Więc masz to, podstawowy (i szybki) wyszukiwarka. Oczywiście jest jeszcze więcej do zrobienia, na przykład usunięcie interpunkcji, kodu HTML i bezwartościowych słów kluczowych, takich jak „i”, „jeśli”, „lub”. Nie dotyczy to wyszukiwania fraz kluczowych, ale możesz użyć podobnego systemu dla fraz, jeśli możesz dowiedzieć się, gdzie zaczynają się i kończą.
Komentarze