algoritmo real (2): las estructuras de datos y algoritmos clásicos detrás del análisis de motor de búsqueda

algoritmo real (2): las estructuras de datos y algoritmos clásicos detrás del análisis de motor de búsqueda

Como en una máquina (es la memoria de la máquina de 8 GB, disco duro es un 100 + GB) una pequeña cantidad de código para lograr a través de motores de búsqueda, el motor de búsqueda se divide en cuatro partes: recogida, análisis, indexación, consulta. Reunir a saber, el uso de los reptiles rastrear páginas web, analizando responsable de la extracción de contenido web, la segmentación, la construcción de un índice temporal, valores de PageRank calculados de varios índice de trabajo a cargo del índice temporal obtenida por la fase de análisis, la construcción de un índice invertido, consulta responsable de la solicitud del usuario, de acuerdo con invertida acceso al índice de páginas relevantes, cálculo de fila de la página, los resultados de consulta de retorno a los usuarios

colección

Para los motores de búsqueda, las páginas web no se conocen de antemano en el que el motor de búsqueda es la forma de páginas del arrastre de la misma?

grafo dirigido, el vértice de cada página como un motor de búsqueda para la totalidad de Internet visto como una estructura de datos, si una página contiene un vínculo a otra página, entonces incluso un borde dirigido entre dos vértices, puede utilizar el gráfico de recorrido buscar algoritmo para atravesar toda la página de Internet, el motor de búsqueda utiliza una estrategia de búsqueda en anchura es de primeros enlaces fIND para algunos de la web más conocida (páginas de alto peso) de (tales como Sina casa, Tencent casa, etc.) enlaces de la página de semillas colocadas en la cola, el rastreador según la estrategia en amplitud, enlace de parada eliminan de la cola, y luego tomar las correspondientes páginas rastreadas, enlaces a otras páginas web analizadas contiene, y luego añadir un enlace a la analizada cola

1 páginas que enlazan a que se arrastran archivo: links.bin

Primer Proceso de búsqueda rastrear páginas de ancho, la parada del rastreador analizar el vínculo, lo puso en la cola, la cola entonces vincular más al ajuste con un archivo almacenado en el disco (links.bin) como BFS en la cola, el rastreador links.bin de archivos, eliminar la página correspondiente enlaces trepan tomadas hasta después de las páginas web de rastreo de los enlaces de Analizada almacenados directamente a presentar Links.bin

Cómo analizar la página de un vínculo? toda la página como una gran cadena, utilizando el algoritmo de coincidencia de cadenas, en esta cadena grande, la búsqueda de <link>dicha pestaña de una página, y luego leyó la orden <link></link>directamente a las cadenas, es decir, enlaces Web

2 páginas condenados a volver a presentar: bloom_filter.bin

¿Cómo evitar el rastreo duplicado misma página? el uso de filtro Bloom, se puede lograr rápidamente un ahorro condenados a la página de memoria pesada, pero después de la reanudación de la inactividad de la máquina, se vació filtro Bloom, puede dar lugar a un gran número de ya se arrastra sobre las páginas se va a repetir el rastreo, se puede tales periódicamente ya que cada filtro Bloom media hora persistió en el disco, el archivo se almacena en el bloom_filter.bin, tras el reinicio, el archivo de lectura de disco bloom_filter.bin restaurado en la memoria

3 página almacenar archivos originales: doc_raw.bin

Después de rastrear páginas web, almacenarlo a prepararse para su posterior análisis fuera de línea, fines de indexación, la forma de almacenar grandes cantidades de datos en bruto que la página?

Una pluralidad de páginas web almacenadas en un archivo, entre cada página separada por un cierto identificador, fácil de leer, el siguiente formato

doc1_id \ t doc1_size \ t DIC1 \ r \ n \ r \ n

número de página \ tamaño de página \ web \ delimitador

Ese documento no será mucho, debido a que el sistema de archivos tiene algunas restricciones en el tamaño del archivo. Establecer cada tamaño de archivo no puede exceder de un cierto valor, cuando más de este valor, se creará un nuevo archivo para almacenar el nuevo rastreo web.

Un tamaño de la máquina es de disco duro de 100 GB, un tamaño de página es de 64 KB media, en una máquina, se puede almacenar alrededor de 100W a 200W páginas web que se arrastran 100W pasar tiempo hasta varias horas

4 enlaces web y los números correspondientes al archivo: doc_id.bin

Los números de página en realidad están asignados a cada página un identificador único, para facilitar nuestro análisis, la página de índice, el número de página de cómo hacerlo?

De acuerdo con el orden de las páginas que se rastree, desde pequeñas a grandes están numerados, el enfoque específico es: un centro de contador de mantenimiento después de cada rastreo a una página web, se obtiene un número del contador, una distribución de esta página, entonces el contador se incrementa en primer lugar, mientras que las páginas almacenadas, la correspondencia entre los enlaces de la web con los números almacenados en otro archivo doc_id.bin

análisis

Después de arrastrarse por la página, la página web para el análisis fuera de línea, la primera página es extraer la información de texto, y la segunda palabra es la creación de un índice temporal

1 extraer páginas de información de texto

Página es un conjunto de datos semi-estructurados, hay una gran variedad de etiquetas, código de JavaScript, estilo CSS. Para los motores de búsqueda, los usuarios sólo pueden ocupe de esa parte de la información a simple vista para ver, a partir de la página, extraer el mensaje de texto?

La razón por la web es de datos semi-estructurados, ya que sí está de acuerdo con ciertas reglas para escribir, es decir, HTML sintaxis de especificación, basándose en las etiquetas de texto a extracto de proceso de extracción de información se divide en dos etapas:

  • Extracción del código, estilo CSS Javascript y el contenido de la caja desplegable (ya que el contenido del usuario cuando el desplegable cuadro no está en funcionamiento no es visible), que consiste en eliminar las <style></style>,<script></script>,<option></option>tres palabras clave, utilizando AC autómata qué algoritmo de múltiples cadena coincidente, página web cadena grande, desechables hallazgo <style></style>,<script></script>,<option></option>tres palabras clave, para atravesar la cadena durante este período, incluso borrado de la página con notas
  • Retire todas las etiquetas HTML, algoritmos implementados por cadena coincidente

2 palabra y crear un índice temporal

Llevado a cabo después de mensaje de texto la palabra, y crear un índice temporal

Inglés páginas palabra es muy simple, sólo por espacios, delimitadores de puntuación pueden, página web china, entonces el método de segmentación basado en diccionario y reglas

Ese diccionario de sinónimos diccionario, contiene un gran número de palabras de uso común, con el diccionario de sinónimos y la regla de coincidencia más larga, la palabra de texto, la llamada regla de partido más largo, lo que coincide con las palabras más largas posibles

Por ejemplo, para la palabra del texto es "la liberación del pueblo chino", el léxico de "China", "China" y "los chinos", "ejército de liberación" que las palabras, toman el partido más largo, es el "pueblo chino" a dividido palabra, en lugar de "China", "los chinos" dividir una palabra, la palabra léxico, la construcción de la estructura de árbol Trie, y luego tomar las páginas de texto coincidente en el árbol Trie

La información de texto para cada página después de la terminación de palabras, lo que resulta en una lista conjunto de palabras, la correspondencia entre las palabras y las páginas escritas en un archivo de índice temporal, tmp_index.bin, estos archivos temporales de índice utilizado para construir el índice invertido formato de archivo:

term1_id \ t doc_id \ r \ n

Ni una palabra \ número de página \ delimitador

En el almacenamiento de archivos índice temporal es el número de palabras que term_id, ni una palabra, el objetivo es ahorrar espacio de almacenamiento, este número viene? Mantener una calculadora, cada vez que se separó de información de texto en la página web una nueva palabra, se tomó un número de asignación del mostrador, y luego contador +1

También es necesario utilizar la tabla hash ha recopilado un número récord de palabras, el proceso de la página web de la palabra mensaje de texto, la palabra de salir de la división, primero localice la tabla hash, si lo encuentra, el uso directo del número existente, no, ir a tome el mostrador, y añadir nuevas palabras y números en la tabla hash

Cuando todas las páginas de la palabra, la correspondencia entre la palabra escrita con el número de archivo de disco, llamado term_id.bin

índice

El índice temporal está construido para generar el índice fase de análisis invertida (palabra es lo que el documento contiene), índice invertido registró cada palabra y invertida gráfico estructura de índice incluye su lista de páginas:

Tid1 \ t Did1, Did2, did3 ......, DIDX \ r \ n

term_id abreviaturas, número de palabra \ Did1, ......, DIDX es una página Web que contiene una lista numerada de las palabras

Al construir archivos de índice invertidas, porque un archivo de índice grande no se puede cargar en la memoria de una sola vez, de varias vías aplicación de combinación de especie, por primera vez en un archivos de índice temporal, ordenados por número de tamaño de las palabras, ya que un gran índice temporal, en general algoritmo basado en memoria de clasificación no puede manejar, utilizar la combinación de tipo de pensamiento, que se divide en varios archivos pequeños, la primera clasificación independiente para cada archivo pequeño, y finalmente se funden. Se puede tratar directamente con MapReduce

Una vez finalizada la clasificación archivo de índice temporal, la misma palabra se organizó en conjunto, sólo el orden de recorrido de la ordenados archivo de índice temporal, usted será capaz de averiguar cada palabra página de la lista número correspondiente, y luego almacenarlos en invertida archivo de índice

Además de archivo invertido, sino que también necesita presentar un número de registro de cada palabra en posición descentrada archivo de índice invertido, term_offset.bin, el papel de este documento es ayudarnos a encontrar rápidamente una palabra en número de índice invertido ubicación de almacenamiento y, a continuación, leer rápidamente el número de página correspondiente a la lista numerada de palabras del índice invertido

Tid1 \ t Offset1 \ r \ n

Sin delimitador de palabra compensado

investigación

Para lograr los archivos de usuario final antes de usar varias de búsqueda:

  • doc_id.bin
  • term_id.bin
  • index.bin
  • term_offset.bin

Además de los otros tres documentos index.bin se cargan en la memoria, organizado como una tabla hash esta estructura de datos, cuando el usuario en el cuadro de búsqueda, introduzca un texto de la consulta, el texto introducido por el usuario para llevar a cabo el procesamiento de textos, obtener la palabra después de la palabra K, tomar la palabra K, correspondiente a la tabla hash term_id.bin, encontrar el número de la palabra correspondiente, después de las consultas, obtener la palabra K correspondiente al número de palabras, que tiene el número palabra K ir term_offset.bin tabla hash correspondiente, encontrar el número de cada palabra en posición descentrada archivo de índice invertido, consiguió el K posición compensada, con el índice invertido, encontrar el K correspondiente a una palabra que lo contiene páginas lista numerada

Para las páginas K lista numerada, contar el número de cada una aparece número de página, puede hacer uso de la tabla hash con las estadísticas, los resultados estadísticos obtenidos, de acuerdo con el número de ocurrencias, de pequeño a gran pedido, parece más el número, más instrucciones contenidas los usuarios buscar palabras, y luego tomar el número de página a doc_id.bin archivo para encontrar el enlace web correspondiente, la paginación se puede mostrar al usuario

resumen

Las páginas de PageRank de cálculo algoritmo de derecho de resultados de la consulta calcular la clasificación modelo TF-IDF

Escribir código para un motor de búsqueda

¿Cómo lograr información Resumen de soporte, y la memoria caché?

Resumen de la información:
aumento summary.bin y summary_offset.bin. Después de extraer información de la página web de texto, extraído como los antes 80-160 palabras, escritas a digerir summary.bin, y se escribe en la ubicación summary_offset.bin offset.
summary.bin formato:
doc_id \ t summary_size \ t el Resumen \ r \ n el \ r \ n- el
formato summary_offset.bin:
doc_id \ t desplazamiento \ r \ n- el
digest pantalla de resultados de Google es el texto cerca del término de búsqueda. Si quieres conseguir este efecto, se puede guardar todo el texto de la página, la construcción de resultados de búsqueda, los términos de búsqueda para encontrar la ubicación en el texto de la página, buscar con texto de intercepción a corto plazo.

Caché:
puede doc_raw.bin como instantáneas, registrando un aumento doc_raw_offset.bin doc_id en doc_raw.bin posición de desplazamiento.
doc_raw_offset.bin Formato:
DOC_ID \ T compensado \ R ^ \ n-

Publicado 75 artículos originales · ganado elogios 9 · vistas 9162

Supongo que te gusta

Origin blog.csdn.net/ywangjiyl/article/details/104893377
Recomendado
Clasificación