2012-01-27 25 views
5

Jak mogę przeprowadzić ponowne indeksowanie w stylu Google w mojej aplikacji (w sieci lub konsoli). Potrzebuję tylko ponownego przeszukania tych stron, które są aktualizowane po określonej dacie.W jaki sposób mogę przeprowadzić ponowne indeksowanie w stylu Google w mojej aplikacji (www lub konsoli)?

Nagłówek LastModified w System.Net.WebResponse podaje tylko aktualną datę serwera. Na przykład, jeśli pobrałem jedną stronę za pomocą HTTPWebRequest w dniu 27 stycznia 2012 r. I sprawdziłem nagłówek daty LastModified, pokazuje ona aktualny czas serwera po wyświetleniu strony. W tym przypadku jest to tylko 27 stycznia 2012 r.

Czy ktoś może sugerować inne metody?

+0

Czy próbujesz zaindeksować strony, których zawartość się zmieniła lub czy zmieniono zasoby na serwerze? To ważne wyróżnienie ... jeśli próbujesz wykryć zmianę treści, "LastModified" nie dostarczy Ci tych informacji, ponieważ zawartość jest obsługiwana dynamicznie. – Kiril

+0

Chcę zaplanować proces indeksowania w określonym przedziale, powiedzmy 10 dni.Podczas ponownego indeksowania chcę zaindeksować tylko te strony, które zostały zmodyfikowane po poprzednim zdarzeniu indeksowania. –

+0

Tak naprawdę nie odpowiedziałeś na moje pytanie ... jest różnica między ostatnią zmianą strony a jej zmianą. Zawartość strony może się zmienić bez zmiany faktycznego zasobu serwera (np. Strony). Co to jest, strona lub zawartość strony? – Kiril

Odpowiedz

7

Po pierwsze, należy podkreślić, że to, co próbujesz zrobić, jest bardzo trudne i istnieje wiele artykułów na poziomie badań, które starają się go rozwiązać (podam ci kilka linków do kilku z nich trochę później). Nie ma sposobu sprawdzenia, czy witryna została zmieniona bez jej przeszukania, chociaż możesz mieć skróty, takie jak sprawdzanie długości treści z nagłówka odpowiedzi bez pobierania reszty strony. Pozwoli to systemowi oszczędzać na ruchu, ale nie rozwiąże problemu w sposób, który jest naprawdę użyteczny.

Po drugie, ponieważ niepokoi Cię zawartość, pole nagłówka Last-Modified nie będzie dla ciebie bardzo przydatne, a nawet posunąłbym się do stwierdzenia, że ​​nie będzie on w ogóle użyteczny.

Po trzecie, to, co opisujesz, ma pewne sprzeczne wymagania, ponieważ chcesz zaindeksować tylko te strony, które mają zaktualizowaną treść, a to nie jest dokładnie to, co robi Google (a mimo to chcesz indeksować google). Przeszukiwanie Google koncentruje się na dostarczaniu najświeższych treści dla najczęściej wyszukiwanych/odwiedzanych witryn. Na przykład: Google ma małe zainteresowanie częstym indeksowaniem witryny, która aktualizuje jej treść dwa razy dziennie, gdy ta witryna ma 10 użytkowników dziennie, zamiast tego Google jest bardziej zainteresowany zaindeksowaniem witryny, która dziennie odwiedza 10 milionów użytkowników, nawet jeśli jej aktualizacje treści rzadziej. Może się również zdarzyć, że strony internetowe, które aktualizują swoje treści, często mają również wielu odwiedzających, ale z punktu widzenia Google nie jest to właściwe.


Jeśli masz do odkrywania nowych stron internetowych (pokrycia) i jednocześnie chcesz mieć najnowszą treść stron wiedzieć o (świeżość), to mają sprzeczne cele (co jest prawdą dla większości roboty, nawet Google). Zwykle dzieje się tak, że gdy masz większy zasięg, masz mniej świeżości i jeśli masz więcej świeżości, masz mniejszy zasięg. Jeśli jesteś zainteresowany w równoważeniu zarówno, to proponuję przeczytać następujące artykuły:

Podsumowując, pomysł polega na tym, że musisz zaindeksować stronę kilka razy (a może kilkaset razy), abyś mógł zbudować dobrą miarę swojej historii. Gdy masz już dobry zestaw miar historycznych, użyjesz modelu predykcyjnego do interpolacji, kiedy witryna zostanie ponownie zmieniona, a użytkownik zaplanuje indeksowanie przez jakiś czas po oczekiwanej zmianie.

Powiązane problemy