2012-04-26 24 views
13

Próbuję zbudować bardzo małą, niszową wyszukiwarkę, używając Nutch do indeksowania konkretnych witryn. Niektóre z nich to witryny z wiadomościami/blogami. Jeśli zaindeksuję, powiedzmy, techcrunch.com, i zapiszę i zindeksuję ich stronę główną lub jedną z ich głównych stron, to w ciągu kilku godzin mój indeks dla tej strony będzie nieaktualny.Strategia przeszukiwania/indeksowania często aktualizowanych stron internetowych?

Czy duża wyszukiwarka, taka jak Google, ma algorytm do ponownego indeksowania często aktualizowanych stron bardzo często, nawet co godzinę? Czy to tylko wynik często aktualizowanych stron bardzo niskie, więc nie są one zwracane?

Jak mogę sobie z tym poradzić we własnej aplikacji?

Odpowiedz

2

Staraj się zachować niektóre statystyki na stronie głównej na temat częstotliwości aktualizacji. Wykrywanie aktualizacji jest proste, wystarczy zapisać nagłówki ETag/Last-Modified i odesłać je z następnej prośby. Zachowanie częstotliwości aktualizacji running average (powiedzmy w przypadku ostatnich 24 indeksowań) pozwala dość dokładnie określić częstotliwość aktualizacji stron tytułowych.

Po przeszukaniu strony głównej można określić, kiedy następna aktualizacja jest oczekiwana i umieścić nowe zadanie indeksowania w wiadrze w tym samym czasie (wiadra trwające jedną godzinę to zazwyczaj dobra równowaga między szybkim a uprzejmym). Co godzinę wystarczy wziąć odpowiedni zasobnik i dodać zadania do kolejki zadań. W ten sposób możesz mieć dowolną liczbę robotów i nadal mieć pełną kontrolę nad harmonogramem poszczególnych przeszukiwań.

+0

Dzięki. Pozwólcie, że zapytam o coś bardziej konkretnego - a co z przeszukiwaniem różnych katalogów? Na przykład strona z katalogiem osób, które można wyszukiwać, ale którą można przeglądać alfabetycznie bez filtrów? Lub strony, która zbiera artykuły i publikuje je w kolejności ich daty publikacji online? Jak można wykryć, że pojawił się nowy wpis, powiedzmy, na stronie 34. Czy musiałbym ponownie indeksować wszystkie dostępne strony? – Swader

+0

Strony aukcji będą oczywiście miały nowe nagłówki ETag (ale niekoniecznie nowe nagłówki zmodyfikowane przez Las). W większości przypadków będziesz musiał ponownie indeksować strony aukcji. Ale jeśli śledzisz także linki do poszczególnych stron artykułów, wystarczy zindeksować nowe posty. – simonmenke

+0

Etag/Last-Modified nie są godnymi zaufania źródłami do modyfikacji strony specjalnie dla dynamicznie generowanych treści. W wielu przypadkach zmienne te są niepoprawnie generowane przez interpreter języka. – AMIB

21

Dobre pytanie. To jest faktycznie aktywny temat w społeczności badawczej WWW. Zastosowana technika nazywa się Ponownie indeksowania strategii lub Page Odśwież polityki.

Ponieważ wiem, że istnieją trzy różne czynniki, które zostały uznane w literaturze:

  • Zmiana częstotliwości (jak ofter treść strony internetowej jest aktualizowana)
    • [1]: Sformalizował pojęcie "świeżości" danych i użył modelu poisson process do modelowania zmiany stron internetowych.
    • [2]: Częstotliwość Estymator
    • [3]: Więcej polityki szeregowania
  • Trafność (ile wpływ zaktualizowana zawartość stronę w wynikach wyszukiwania)
    • [4] : Maksymalizuj jakość doświadczenia użytkownika dla tych, którzy wyszukują w wyszukiwarce
    • [5]: Określ (prawie) optymalne częstotliwości indeksowania
  • informacji Trwałość (czasy życia fragmenty zawartości, które pojawiają się i znikają ze stron WWW w czasie, co jest wykazane, że nie silnie skorelowane z częstotliwością zmian)
    • [6]: odróżnić ulotnej i zawartości trwałych

Możesz zdecydować, który czynnik jest ważniejszy dla Twojej aplikacji i użytkowników. Następnie możesz sprawdzić poniższy odnośnik, aby uzyskać więcej informacji.


Edit: pokrótce omówić estymatora częstotliwości mowa w [2], aby zacząć grę. Opierając się na tym, powinieneś być w stanie dowiedzieć się, co może być przydatne w innych dokumentach. :)

Proszę przestrzegać kolejności wskazanej poniżej, aby przeczytać ten artykuł. Nie powinno to być zbyt trudne do zrozumienia, o ile znasz jakieś prawdopodobieństwo i statystyki 101 (może znacznie mniej, jeśli weźmiesz formułę estymatora):

Krok 1. Przejdź do Sekcja 6.4 - Wniosek do Przeszukiwacz sieci. Tutaj Cho wymienił 3 podejścia do oszacowania częstotliwości zmiany strony internetowej.

  • Jednolita polityka: przeszukiwacz powraca na wszystkie strony z częstotliwością raz na tydzień.
  • Zasady naiwne: w pierwszych 5 odwiedzinach robot odwiedza każdą stronę z częstotliwością raz w tygodniu. Po 5 wizytach robot szacuje częstotliwości zmiany na stron przy użyciu estymatora naiwnego (sekcja 4.1).
  • Nasza polityka: Przeszukiwacz używa proponowanego estymatora (punkt 4.2) do oszacowania częstotliwości zmiany.

Krok 2. Polityka naiwna. Przejdź do sekcji 4. Będziesz czytać:

Intuicyjnie możemy wykorzystać X/T (X: liczba wykrytych zmian, T: okres monitoring) jako szacunkowej częstości zmian.

Sekcja podsekwencji 4.1 właśnie udowodnił to oszacowanie jest stronniczy 7 w-consistant 8 aw efektywny 9.

Krok 3. Ulepszony estymator. Przejdź do sekcji 4.2. Nowy Estymator wygląda jak poniżej: enter image description here

gdzie \bar X jest n - X (liczba dostępów, że element nie uległ zmianie) i n jest liczba dostępów. Po prostu weź tę formułę i oszacuj częstotliwość zmian. Nie musisz rozumieć dowodu w pozostałej części podrozdziału.

Krok 4. Istnieją pewne triki i użyteczne techniki omówione w punkcie 4.3 i rozdziale 5, które mogą być pomocne. Punkt 4.3 omawia sposoby radzenia sobie z nieregularnymi interwałami. Sekcja 5 rozwiązała pytanie: kiedy dostępna jest data ostatniego modyfikowania elementu, jak możemy go użyć do oszacowania częstotliwości zmian? Proponowany estymator pomocą datę ostatniej modyfikacji jest pokazany poniżej:

enter image description here

Wyjaśnieniem tego algorytmu po Fig.10 w papierze jest bardzo wyraźna.

Krok 5. Teraz, jeśli jesteś zainteresowany, można przyjrzeć się konfiguracji eksperymentu i wyniki w sekcji 6.

Więc to wszystko. Jeśli teraz czujesz się bardziej pewny siebie, wypróbuj świeżości w [1].


Odniesienia

[1] http://oak.cs.ucla.edu/~cho/papers/cho-tods03.pdf

[2] http://oak.cs.ucla.edu/~cho/papers/cho-freq.pdf

[3] http://hal.inria.fr/docs/00/07/33/72/PDF/RR-3317.pdf

[4] http://wwwconference.org/proceedings/www2005/docs/p401.pdf

[5] http://www.columbia.edu/~js1353/pubs/wolf-www02.pdf

[6] http://infolab.stanford.edu/~olston/publications/www08.pdf

+2

Dosyć zaawansowane rzeczy, moja głowa trochę boli podczas czytania. Dzięki. – Swader

+0

@Swader: Jaka jest wartość "świeżych informacji" dla użytkowników końcowych? Czy w czasie jest to ściśle ujemna wykładnicza? Czy wszyscy użytkownicy są tacy sami w formie i skali tej funkcji; czy wszystkie witryny są takie same dla wszystkich użytkowników? Wymaga to nieco optymalizacji pod względem numeracji. –

+0

Wszyscy użytkownicy i witryny mają taką samą formę i skalę. Innymi słowy, ostatecznym celem jest po prostu przeszukiwanie katalogu danych przeszukiwanych gdzie indziej. – Swader

2

Nie jestem ekspertem w tym temacie przez odcinku wyobraźni ale Sitemaps są jednym ze sposobów, aby złagodzić ten problem.

W najprostszych słowach, XML Sitemap-zwykle nazywane Mapa strony, z kapitał S znajduje się lista stron na swojej stronie. Utworzenie i przesłanie mapy witryny pomaga uzyskać pewność, że Google wie o wszystkich stronach w Twojej witrynie, w tym o adresach URL, które mogą nie być możliwe do wykrycia przez normalny proces indeksowania Google. Ponadto można użyć map witryn, aby udostępnić Google metadane dotyczące określonych typów treści w witrynie, w tym filmów wideo, obrazów, telefonów komórkowych oraz wiadomości.

Google używa tego specjalnie, aby pomóc im indeksować witryny z wiadomościami.Więcej informacji na temat map witryn i informacji o Google News i mapach witryn here można znaleźć na mapach witryn.

Zwykle plik Sitemaps.xml można znaleźć w pliku robots.txt witryny. Na przykład, Mapa TechCrunch jest tylko

http://techcrunch.com/sitemap.xml

który zamienia ten problem do analizowania XML w sposób regularny. Jeśli nie możesz go znaleźć w pliku robots.txt, zawsze możesz skontaktować się z webmasterem i sprawdzić, czy dostarczy Ci go.

Update 1 24 października 2012 10:45,

Rozmawiałem z jednym z członków mojego zespołu i dał mi jakąś dodatkową wiedzę o tym, jak traktujemy ten problem. Chcę naprawdę powtórzyć, że nie jest to prosty problem i wymaga wielu częściowych rozwiązań.

Inną rzeczą, którą robimy, jest monitorowanie kilku "stron indeksowych" dotyczących zmian w danej domenie. Weźmy na przykład The New York Times . Tworzymy jedną stronę indeksu dla domenie najwyższego poziomu pod adresem:

http://www.nytimes.com/

Jeśli przyjrzeć się tej stronie można zauważyć dodatkowe podobszary jak świata, USA, polityki, biznesu, itp tworzymy dodatkowe strony indeksowe dla wszystkich z nich. Firma ma dodatkowe zagnieżdżone strony indeksu, takie jak Global, DealBook, Markets, Economy itd. Często zdarza się, że URL zawiera 20 stron indeksowych. Jeśli zauważyliśmy dodatkowe adresy URL dodane do indeksu, dodajemy je do kolejki do przeszukiwania.

Oczywiście jest to bardzo frustrujące, ponieważ może być konieczne ręczne wykonanie każdej witryny, którą chcesz zaindeksować. Możesz rozważyć zapłacenie za rozwiązanie. Używamy SuprFeedr i jesteśmy z tego całkiem zadowoleni.

Wiele witryn wciąż oferuje RSS, który jest skutecznym sposobem indeksowania stron. Wciąż polecam skontaktować się z webmasterem, aby sprawdzić, czy ma jakieś proste rozwiązanie, które może ci pomóc.

+0

Dobre porady dotyczące witryn oferujących mapy witryn. Niestety mam do czynienia z niektórymi, którzy nie aktualizują swoich map witryn lub nie mają ich wcale. – Swader

+0

Dodałem aktualizację. Mam nadzieję, że to dla ciebie jakaś pomoc. – sunnyrjuneja

6

Algorytmy Google są w większości zamknięte, nie mówią, jak to robią.

Zbudowałem przeszukiwacz przy użyciu koncepcji directed graph i oparto szybkość ponownego indeksowania na stronach "degree centrality. Możesz uznać stronę internetową za skierowany wykres ze stronami jako węzłami i hiperłączami jako krawędziami. Węzłem o dużej centralności będzie prawdopodobnie strona, która jest aktualizowana częściej. Przynajmniej takie jest założenie.

Można to zrealizować, przechowując adresy URL i łącza między nimi. Jeśli przeszukasz i nie wyrzucisz żadnych linków, wykres na witrynę będzie rósł. Obliczając dla każdego węzła na stronie (znormalizowany) przedział wejściowy i wyjściowy, podajesz miarę, która strona jest najciekawsza, aby przeszukiwać ją częściej.

+0

Solidna teoria, ale jak by to miało zastosowanie do mojego pierwotnego problemu posiadania katalogu ludzi, którzy są rozłożeni na 2300 stron, z których każda może być aktualizowana w danym momencie (co zmienia również wszystkie inne, gdy zmiana przechodzi w wszystkie późniejsze strony)? – Swader

+0

Jeśli dowolna strona może być aktualizowana w dowolnym momencie z takim samym prawdopodobieństwem i to wszystko, co wiemy, nie ma możliwości określenia, która strona zostanie zaktualizowana w następnej kolejności. W takim przypadku ta koncepcja nie będzie działać. Pomysł, który podałem, dotyczy każdej strony w odniesieniu do innych stron witryny. Możesz wtedy szukać metody przewidującej użycie ponownego indeksowania * tylko * na podstawie samej strony. – TTT

+0

W takim przypadku odpowiedź greeness może pomóc lepiej, szczególnie ** relevance ** i ** change frequency **. – TTT

Powiązane problemy