2012-04-26 28 views
13

Estoy tratando de construir un motor de búsqueda muy pequeño, usando Nutch para rastrear sitios específicos. Algunos de los sitios son sitios de noticias/blog. Si rastreo, digamos, techcrunch.com, y almaceno e indico su página principal o cualquiera de sus páginas principales, en cuestión de horas mi índice para esa página estará desactualizado.Estrategia sobre cómo rastrear/indexar páginas web actualizadas frecuentemente?

¿Tiene un motor de búsqueda grande como Google un algoritmo para volver a rastrear con frecuencia las páginas actualizadas con frecuencia, incluso por hora? ¿O solo puntúa las páginas actualizadas con frecuencia muy bajas para que no se devuelvan?

¿Cómo puedo manejar esto en mi propia aplicación?

Respuesta

2

Trate de mantener algunas estadísticas de la página de inicio en la frecuencia de actualización. Detectar una actualización es fácil, simplemente almacene el ETag/Last-Modified y envíe de nuevo los encabezados If-None-Match/If-Updated-Since con su próxima solicitud. Mantener una frecuencia de actualización running average (por ejemplo, en los últimos 24 rastreos) le permite determinar con bastante precisión la frecuencia de actualización de las páginas principales.

Después de haber rastreado una página principal, usted determinaría cuándo se espera la próxima actualización y colocará una nueva tarea de rastreo en un contenedor justo en ese momento (los intervalos de una hora suelen ser un buen equilibrio entre rápido y cortés). Cada hora, simplemente tomaría el cubo correspondiente y agregaría los trabajos a su cola de trabajos. De esta manera, puede tener cualquier número de rastreadores y aún así tener mucho control sobre la programación de los rastreos individuales.

+0

Gracias. Sin embargo, permítame preguntar acerca de algo más específico: ¿qué pasa con el rastreo de varios directorios? Por ejemplo, una página que tiene un directorio de personas que se pueden buscar, pero que se puede examinar alfabéticamente sin filtros. ¿O una página que recopila artículos y los publica en el orden de su fecha de publicación en línea? ¿Cómo se detectaría que se ha inyectado una nueva entrada en, digamos, la página 34. Tendría que volver a rastrear todas las páginas disponibles? – Swader

+0

Las páginas del listado obviamente tendrían nuevos encabezados ETag (pero no necesariamente nuevos encabezados Las-Modified). En la mayoría de los casos, debería volver a rastrear las páginas de la lista. Pero, cuando también esté siguiendo los enlaces a las páginas de artículos individuales, solo tendrá que rastrear las nuevas publicaciones. – simonmenke

+0

Etag/Last-Modified no son fuentes confiables para la modificación de páginas especialmente para contenido generado dinámicamente. En muchos casos, estas variables son generadas por el intérprete de lenguaje de forma incorrecta. – AMIB

21

Buena pregunta. Este es en realidad un tema activo en la comunidad de investigación WWW. La técnica involucrada se llama Re-crawl Strategy o Política de actualización de página.

Como sé que hay tres factores diferentes que fueron considerados en la literatura:

  • Cambio de frecuencia (cómo presenta especialmente el contenido de una página web se actualiza)
    • [1]: Formalizó la noción de "frescura" de datos y usó un poisson process para modelar el cambio de páginas web.
    • [2]: Frecuencia estimador
    • [3]: Más de política de planificación
  • Relevancia (el grado de influencia del contenido de la página actualizada tiene en los resultados de búsqueda)
    • [4] : Maximice la calidad de la experiencia del usuario para quienes consultan el motor de búsqueda
    • [5]: determine las frecuencias de rastreo (casi) óptimas
  • información Longevidad (los tiempos de vida de los fragmentos de contenido que aparecen y desaparecen de las páginas web a través del tiempo, que se muestra no se correlaciona fuertemente con la frecuencia de cambio)
    • [6]: distinguir entre el contenido efímero y persistente

Es posible que desee decidir qué factor es más importante para su aplicación y los usuarios. Luego puede consultar la referencia a continuación para obtener más detalles.


Editar: discuto brevemente el estimador de frecuencia se menciona en [2] para que pueda empezar. En base a esto, usted debería ser capaz de descubrir qué podría serle útil en los otros documentos. :)

Por favor, siga el orden que señalé a continuación para leer este documento. No debería ser demasiado difícil de entender siempre que conozca alguna probabilidad y estadística 101 (quizás mucho menos si solo toma la fórmula del estimador):

Paso 1. Vaya a Sección 6.4 - Solicitud a un Rastreador web Aquí Cho enumeró 3 enfoques para estimar la frecuencia de cambio de la página web.

  • Política de uniformidad: A crawler visita todas las páginas con la frecuencia de una vez por semana.
  • Política ingenua: en las primeras 5 visitas, un rastreador visita cada página en la frecuencia de una vez por semana. Después de las 5 visitas, el rastreador estima las frecuencias de cambio de las páginas utilizando el estimador ingenuo (Sección 4.1)
  • Nuestra política: el rastreador usa el estimador propuesto (Sección 4.2) para estimar la frecuencia de cambio.

Paso 2. La política ingenua. Por favor, vaya a la sección 4. Usted va a leer:

Intuitivamente, podemos utilizar X/T (X: el número de cambios detectados, T: período de monitoreo) como la frecuencia estimada de cambio.

Subsecuencia sección 4.1 acaba de demostrar esta estimación es parcial 7, en constante 8 y eficientes 9.

Paso 3. El estimador mejorado. Vaya a la sección 4.2. El nuevo estimador parece a continuación: enter image description here

donde \bar X es n - X (el número de accesos que el elemento no cambió) y n es el número de accesos. Así que solo toma esta fórmula y estima la frecuencia de cambio. No necesita comprender la prueba en el resto de la subsección.

Paso 4. Hay algunos trucos y técnicas útiles discutidos en la Sección 4.3 y la Sección 5 que pueden ser útiles para usted. La Sección 4.3 discutió cómo tratar los intervalos irregulares. La Sección 5 resolvió la pregunta: cuando la fecha de última modificación de un elemento está disponible, ¿cómo podemos usarla para estimar la frecuencia de cambio? El estimador propuesto usando fecha de última modificación se muestra a continuación:

enter image description here

La explicación para el algoritmo anterior después de la figura 10 en el documento es muy claro.

Paso 5. Ahora bien, si usted tiene interés, puede echar un vistazo a la configuración del experimento y los resultados en la sección 6.

Así que es eso. Si se siente más seguro ahora, siga adelante y pruebe el papel de frescura en [1].


Referencias

[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

Bastante avanzado, me duele un poco la cabeza al leerlo. Gracias. – Swader

+0

@Swader: ¿Cuál es el valor de la "información nueva" para los usuarios finales? ¿Es estrictamente exponencial negativo en el tiempo? ¿Son todos los usuarios iguales en la forma y escala de esta función? ¿Son todos los sitios iguales para todos los usuarios? Esto requiere un poco de optimización del número de crujidos. –

+0

Todos los usuarios y sitios son iguales en forma y escala. En otras palabras, el objetivo final es simplemente tener un directorio de búsqueda de datos rastreados en otro lugar. – Swader

2

No soy un experto en este tema por cualquier tramo de la imaginación, pero Sitemaps son una forma de aliviar este problema.

En sus términos más simples, un mapa del sitio XML-usualmente llamado mapa del sitio, con un S- es capital de una lista de las páginas de su sitio web. Crear y enviar un Sitemap ayuda a asegurar que Google sepa sobre todas las páginas en su sitio, incluidas las URL que pueden no ser detectables por el proceso de rastreo normal de Google. Además, también puede usar Sitemaps para proporcionar a Google los metadatos sobre tipos específicos de contenido en su sitio, incluidos videos, imágenes, móvil y Noticias.

Google utiliza esto específicamente para ayudarlos a rastrear sitios de noticias.Puede encontrar más información here en Sitemaps e información sobre Google News y Sitemaps here.

Normalmente, puede encontrar el Sitemaps.xml en el archivo robots.txt de un sitio web. Por ejemplo, mapa del sitio TechCrunch es sólo

http://techcrunch.com/sitemap.xml

que convierte este problema en el análisis sintáctico XML en una base regular. Si no puede encontrarlo en el archivo robots.txt, siempre puede ponerse en contacto con el maestro web y ver si se lo proporcionarán.

ACTUALIZA 1 Oct 24 de 2012 10:45,

hablé con uno de los miembros de mi equipo y me dio alguna información adicional acerca de cómo manejamos este problema. Realmente quiero reiterar que este no es un problema simple y requiere muchas soluciones parciales.

Otra cosa que hacemos es monitorear varias "páginas de índice" para cambios en un dominio dado. Tome el New York Times, por ejemplo. Creamos una página de índice para un dominio de nivel superior en:

http://www.nytimes.com/

Si se echa un vistazo a la página, se puede notar sub-áreas adicionales como el mundo, Estados Unidos, Política, negocios, etc. creamos páginas de índice adicionales para todos ellos. Las empresas tienen páginas de índice anidados adicionales como Global, DealBook, Markets, Economy, etc. No es raro que una url tenga más de 20 páginas de índice. Si notamos alguna URL adicional que se agrega en el índice, la agregamos a la cola para rastrear.

Obviamente, esto es muy frustrante porque es posible que tenga que hacer esto a mano para cada sitio web que desee rastrear. Es posible que desee considerar pagar por una solución. Usamos SuprFeedr y estamos muy contentos con él.

Además, muchos sitios web aún ofrecen RSS, que es una forma efectiva de rastrear páginas. Aún así, recomendaría contactar a un webmaster para ver si tienen alguna solución simple para ayudarte.

+0

Un buen consejo para los sitios web que ofrecen mapas de sitio. Desafortunadamente, estoy tratando con algunos que no mantienen sus sitemaps actualizados, o no los tienen en absoluto. – Swader

+0

Agregué una actualización. Espero que esto sea de ayuda para ti. – sunnyrjuneja

6

Los algoritmos de Google son en su mayoría cerrados, no dirán cómo lo hacen.

Creé un rastreador utilizando el concepto de directed graph y basé la velocidad de relanzamiento en las páginas 'degree centrality. Podría considerar que un sitio web es un gráfico dirigido con páginas como nodos e hipervínculos como bordes. Un nodo con alta centralidad probablemente será una página que se actualice más a menudo. Al menos, esa es la suposición.

Esto se puede implementar almacenando las URL y los enlaces entre ellas. Si rastrea y no descarta ningún enlace, el gráfico por sitio crecerá. Al calcular para cada nodo por sitio, los grados de entrada y salida (normalizados) le darán una medida de qué página es más interesante para volver a rastrear con más frecuencia.

+0

Una teoría sólida, pero ¿cómo se aplicaría esto a mi problema original de tener un directorio de personas distribuidas en 2300 páginas, cualquiera de las cuales puede actualizarse en un momento dado (cambiando también todas las demás a medida que el cambio se va convirtiendo en todas las páginas posteriores)? – Swader

+0

Si se puede actualizar cualquier página en cualquier momento con la misma probabilidad y eso es todo lo que sabemos, no hay forma de saber qué página se actualizará a continuación. En ese caso, este concepto no funcionará al menos. La idea que di considera todas las páginas en relación con las otras páginas de un sitio. Es posible que esté buscando un método que prediga el uso de re-crawl * only * basado en la página en sí. – TTT

+0

En ese caso, la respuesta de greeness puede ayudar mejor tal vez, especialmente ** relevancia ** y ** frecuencia de cambio **. – TTT

Cuestiones relacionadas