Documentos de Académico
Documentos de Profesional
Documentos de Cultura
COMPUTACIÓN
Indexación y
Compresión
de datos para
motores de
búsqueda
Diego Arroyuelo
Académico Departamento de Informática, Universidad Técnica Federico Santa María. Doctor en
Ciencias Mención Computación, Universidad de Chile; Licenciado en Ciencias de la Computación,
Universidad Nacional de San Luis, Argentina. Líneas de Investigación: Estructuras de Datos
y Algoritmos, Compresión y Búsqueda en Texto, Estructuras de Datos Comprimidas, Índices
Comprimidos para Recuperación de la Información.
darroyue@inf.utfsm.cl
52
TEORÍA DE LA
COMPUTACIÓN
P
robablemente muy pocos En el presente artículo mostraré los hacer un ranking de los mismos. Ésta es
usuarios de un motor de avances más recientes y los desafíos una etapa muy importante para la bús-
búsqueda Web se han de- más importantes en el área de Indexa- queda. Sin embargo, en este artículo no
tenido a pensar, respecto ción y Compresión de Datos en motores discutiremos aspectos relacionados con
de los recursos y tecno- de búsqueda, particularmente aquellos el ranking de resultados.
logías involucrados en la en los que he estado involucrado con mi
generación de la página de resultados de
su consulta. La misma debe ser genera-
investigación. Intentaré dar pistas que
permitan comprender cómo los motores
La Indexación de
da en unas pocas décimas de segundo y de búsqueda actuales son capaces de ma- Bases de Datos
debe contener diez resultados relevantes
para el usuario, ojalá los más relevantes.
nejar grandes volúmenes de datos y la car-
ga de trabajo antes mencionada. Todos los
de Documentos
Además, debajo del título y la URL de resultados experimentales aquí mostrados,
Los documentos de la base de datos se co-
cada uno de los resultados encontrados, han sido obtenidos dentro del marco de mi
nocen de antemano a las búsquedas, por
la página debe mostrar pequeñas porcio- grupo de investigación y validados con los
lo que se pueden indexar, esto es, cons-
nes del documento ─conocidas como resultados similares en el estado del arte.
truir una estructura de datos que acelere
snippets─ que contienen las palabras
las respuestas a las consultas. Las estruc-
usadas en la consulta. Para complicar Dada una base de datos de documen-
turas de datos clásicas en este caso son los
más la situación, usualmente decenas de tos de texto (las páginas web), deno-
índices invertidos [9, 13, 22, 30]. Por cada
miles de consultas arriban por segundo tamos con v al vocabulario con todas
palabra p del vocabulario, el índice inver-
a un motor de búsqueda (aproximada- las palabras distintas que aparecen en
tido tiene una lista invertida v que alma-
mente 38 mil consultas por segundo dichos documentos. Para facilitar su
cena los docIDs de los documentos que
para Google en 2012, lo que equivale manipulación, a cada documento se le
contienen a p. Esto es similar al índice que
a 2.4 millones por minuto, o 3.3 mil asigna un identificador (o docID), que
podemos encontrar al final de la mayoría
millones por día [1, 2]). Además, es- es un número entero que lo identifica.
de los libros técnicos. Por cada docID en
tas búsquedas deben realizarse sobre Los usuarios presentan consultas q a la
L(p), también se almacena información
varias decenas de miles de millones base de datos, las que constan de una o
útil para el ranking de resultados, como la
de páginas web [3]. En este escenario, más palabras. El objetivo es encontrar
cantidad de ocurrencias de p en cada uno
tanto la Indexación como la Compre- documentos relacionados con esas pala-
de los documentos.
sión de Datos son indispensables para bras. Existen dos variantes principales
el funcionamiento de los motores de de consultas: las consultas tipo AND
El grueso de las listas invertidas usual-
búsqueda actuales. Esto impacta en los (que buscan los documentos que con-
mente se almacena en memoria secunda-
tiempos de respuesta a las consultas, en tengan a todas las palabras de q) y las
ria, aunque algunas listas (generalmente
el ahorro de espacio de almacenamien- consultas tipo OR (que buscan los do-
las más consultadas) se almacenan en
to, en la consecuente reducción del uso cumentos que contengan al menos una
memoria principal, en lo que se llama el
de espacio físico, en la reducción de los de las palabras de q). Para mostrar los
caché de listas invertidas. Muchos moto-
tiempos de transferencia de datos y en resultados en orden de relevancia para
res de búsqueda incluso precalculan los
el ahorro de energía usada [14]. el usuario, el motor de búsqueda debe
resultados de las consultas más frecuen-
53
TEORÍA DE LA
COMPUTACIÓN
Consulta
del usuario 1 Algoritmos de
procesamiento
de la consulta
Respuesta 5
a la consulta
4
3
2
Caché de listas
invertidas Documentos
(memoria
principal)
tes y las almacenan en caché. El motor de manera eficiente (en menos de un se- de esto, es común que las listas inver-
de búsqueda también debe almacenar la gundo el usuario debe tener su respuesta), tidas se mantengan en el disco, como
base de datos de documentos en memo- describiendo los principales desafíos que se mencionó anteriormente. Dada una
ria secundaria. Ésta es necesaria tanto se presentan. consulta q, las listas invertidas de cada
para la generación de los snippets como palabra de la consulta se transfieren a
para mostrar la versión “en caché” de
la página, entre otros usos. La Figura 1
el Desafío memoria principal para ser procesadas.
Sin embargo, la baja latencia de acceso
resume el proceso de búsqueda, con los De comprimir a la memoria secundaria puede influir
siguientes pasos: (1) La consulta llega al
procesador de consultas; (2) el procesador
los ínDices De negativamente en la latencia de una
consulta.
intenta resolver la consulta usando las lis- búsqueDa
tas almacenadas en caché; (3) si el caché Una solución a este problema es com-
no contiene la lista invertida de alguna de Las listas invertidas requieren usual- primir las listas invertidas [13, 30].
las palabras de la consulta, ésta debe recu- mente una gran cantidad de espacio de Esto permite emplear de mejor manera
perarse desde la memoria secundaria; (4) almacenamiento. Por ejemplo, las listas el espacio disponible para el caché de
después de usar el índice para encontrar invertidas de docIDs para la reconocida listas. La compresión también produce
las diez mejores páginas para la respuesta colección de documentos TREC GOV2 una importante mejora en el tiempo de
(pueden ser más), éstas deben recuperarse requieren aproximadamente 23 GB, si transferencia de las listas desde el disco,
desde la memoria secundaria para generar usamos un entero de 32 bits por cada ya que se transfieren menos bytes (véase,
los snippets; (5) la página de respuesta es docID (en total son 5.750 millones de por ejemplo, el estudio en [13, sección
enviada al usuario. docIDs en todo el índice). Dicha colec- 6.3.6]). En ambos casos, la compresión
ción contiene páginas del dominio .gov impacta favorablemente en el tiempo de
A continuación estudiaremos cómo se de Estados Unidos, con 25 millones de respuesta a los usuarios.
logra realizar el proceso de la Figura 1 documentos y un total de 426 GB. A raíz
54
TEORÍA DE LA
COMPUTACIÓN
La compresión de datos sin pérdida (es no necesariamente óptima. Aquí se des- ta, reduciendo a la mitad los tiempos
decir, aquella en la que al descomprimir tacan los métodos VByte [29], S9 [5] y del párrafo anterior (docIDs asignados
se obtienen exactamente los mismos PForDelta [33]. aleatoriamente). Esta mejora se produ-
datos originales), en general funciona ce porque al asignar los docIDs cuida-
detectando regularidades en los datos Para dar una idea de la compresión que dosamente, menos bloques de la lista
a comprimir. Por ejemplo, la compre- puede alcanzarse en la práctica, el ín- deben ser descomprimidos en tiempo
sión de textos generalmente se basa en dice invertido comprimido para TREC de búsqueda [27, 31]. Nótese que este
detectar las regularidades del lenguaje GOV2 usa entre 6,20 GB (PForDelta) y resultado permite duplicar la capacidad
escrito y así reducir el espacio de la 7,35 GB (VByte). En promedio esto es de respuesta, a la vez que permite usar
codificación. En el caso de las listas in- entre 8,84 bits y 10,48 bits por docID, menos espacio.
vertidas, la compresión se logra usando menor que los 32 bits originales. Res-
lo que se conoce como gap encoding: pecto de la velocidad de descompresión Dados estos resultados, vale la pena
los docIDs se almacenan ordenados de de las listas, se obtienen entre 446 mi- cuestionarse si existe una mejor manera
manera creciente en las listas invertidas. llones y 1.010 millones de docIDs por de representar las listas invertidas cuan-
Luego, se almacena el primer docID en segundo. Una consulta tipo AND puede do los docIDs han sido asignados cuida-
la lista de manera absoluta (es decir, tal responderse en promedio en 12 a 14 mi- dosamente. Después de todo, los moto-
cual es). El resto de los elementos de la lisegundos por consulta. res de búsqueda actuales trabajan casi
lista, en cambio, se almacenan como la exclusivamente en memoria principal
diferencia entre docIDs consecutivos Algunos trabajos recientes [31] mues- [14], lo que hace que este tipo de me-
en la lista (esas diferencias se conocen tran cómo optimizar los resultados del joras sean importantes. Una alternativa
como gaps). Como la lista original está párrafo precedente. Esto se logra gene- puede ser usar métodos de compresión
ordenada por docIDs crecientes, el re- rando gaps mucho más pequeños en las que logran buenas tasas de compresión,
sultado es una lista de números (gaps) listas invertidas, mediante la asignación como Interpolative Encoding [23]. Sin
enteros positivos. Posteriormente, las cuidadosa de docIDs a los documen- embargo, este método no es eficiente
listas se dividen en bloques de tamaño tos de la colección [10, 11, 15, 25, 26, al descomprimir las listas invertidas,
constante (por ejemplo, 128 docIDs por 27]. Una de las técnicas más simples lo que afectaría el tiempo de respuesta.
bloque) y se usa un compresor de núme- y efectivas es la de ordenar las pági- Afortunadamente, hemos podido mos-
ros enteros sobre los gaps [5, 13, 14, 16, nas lexicográficamente por sus URLs, trar que existen mejores representacio-
19, 23, 29, 30, 33]. y luego asignar los docIDs siguiendo nes para las listas invertidas en esos
ese orden. De esta manera, las páginas casos [7], basándonos en la siguiente
Dichos compresores codifican un núme- que corresponden a un mismo sitio (y, observación: el índice invertido para
ro entero en una cantidad de bits pro- por tanto, muy probablemente usan un TREC GOV2 ordenada por URLs con-
porcional al valor del entero: mientras vocabulario similar) van a tener docIDs tiene aproximadamente 60% de gaps
menor es su valor, menos bits se usan. consecutivos, o en su defecto muy si- con valor 1 (comparado con un 10% de
Dado que almacenamos los gaps en milares. Esto se refleja en las listas in- gaps con valor 1 para la colección or-
lugar de los docIDs, normalmente se vertidas, generando gaps más pequeños denada aleatoriamente). Pero si el 60%
obtienen distribuciones con muchos va- comparados con una asignación aleato- de los gaps tienen valor 1, es probable
lores pequeños, logrando comprimir las ria de los docIDs, como la usada en los que estos se agrupen en posiciones con-
listas. La división en bloques de las lis- resultados del párrafo anterior. Para la secutivas de las listas invertidas. Lla-
tas se hace para no descomprimir toda la colección TREC GOV2 enumerada de mamos runs a esos agrupamientos de 1s
lista en tiempo de búsqueda, sino sólo acuerdo a URLs, el espacio usado por el consecutivos. Los resultados empíricos
los bloques que contienen docIDs re- índice invertido es entre 3,69 GB (5,25 en [7] muestran que esto es cierto en la
levantes para una consulta. Los com- bits por docID) y 6,57 GB (9,35 bits por práctica.
presores más efectivos son aquellos docID). La velocidad de descompresión
que permiten una alta velocidad de des- es prácticamente la misma que la del En nuestro trabajo [7] mostramos que
compresión ─dado que esto impacta en párrafo anterior. El tiempo de respues- en estos casos es mejor usar compre-
el tiempo de respuesta─ sumado a una ta para consultas tipo AND es ahora de sión run-length de los runs: en lugar
tasa de compresión razonable, aunque entre 6 y 7 milisegundos por consul- de codificar los 1s en un run de mane-
55
TEORÍA DE LA
COMPUTACIÓN
56
TEORÍA DE LA
COMPUTACIÓN
locidad de descompresión lograda por ridades que pueden aprovecharse para de búsqueda lo adopten para almacenar
compresores estándar como snappy mejorar la compresión. Sin embargo, sus colecciones de documentos.
o LZ4, que llega a ser de 1.0 a 1.5 GB lograr esa tasa de compresión tiene su
por segundo [4], o incluso la velocidad precio: nuestro trabajo [6] mostró que, Una manera efectiva de mejorar la tasa
de descompresión de gzip que llega en el escenario de un motor de búsque- de compresión alcanzada con Turpin et
a ser de cientos de MBs por segundo. da, extraer las diez primeras páginas de al. es usar una compresión de dos fases
Por esta razón los motores de búsqueda respuesta a una consulta usando dicho [6]. Es importante notar que el método
prefieren usar compresores estándar, en enfoque toma 25 milisegundos por con- de Turpin et al. comprime el texto mo-
particular de la familia Lempel-Ziv de sulta. Esto es muy costoso y afecta al dificando la manera en que codifica las
1977 [32], como todos los mencionados tiempo total de respuesta. palabras del mismo. Esto quiere decir
anteriormente. Una solución ineficiente que la estructura original del texto (y
es concatenar las páginas web formando Otra solución efectiva es la de Turpin sus potenciales regularidades) se man-
un único texto, y luego usar un compre- et al. [28], donde proponen enumerar el tienen y, por ende, es posible aplicar un
sor estándar. Sin embargo, para extraer vocabulario de la colección de acuerdo método de compresión estándar sobre él
una página web debemos descomprimir a la frecuencia con la que las palabras [17]. La compresión de dos fases enton-
todo el texto, algo absurdo en el caso de la aparecen en las páginas web: la palabra ces significa: en la primera fase se com-
Web. Otra posible solución es comprimir más frecuente recibe un identificador de prime con Turpin et al., mientras que en
las páginas por separado. Pero esto afecta palabra 0, la segunda palabra más fre- la segunda fase se aplica un compresor
notablemente la tasa de compresión, ya cuente recibe un identificador 1, y así estándar al resultado de la primera fase.
que las regularidades entre páginas no son siguiendo. Luego, las palabras de cada En particular, en [6] los mejores com-
comprimidas. página son reemplazadas por su co- promisos entre tasa de compresión y
rrespondiente identificador, obtenien- velocidad de descompresión se logra-
Una solución bastante aceptada en la do una secuencia de números enteros. ron usando el compresor snappy en
literatura [18, 6] corresponde a un pun- Dado que las palabras más frecuentes la segunda fase. Dicho compresor es
to intermedio entre los enfoques ante- tienen identificadores con menor valor, de los más rápidos para descomprimir,
riores. Se concatenan las páginas web, se utiliza un método de compresión de pero tiene tasas de compresión del 40%
pero esta vez formando bloques de un números enteros (tal como los usados - 50%, lo cual es poco eficiente [4]. Las
tamaño máximo definido (generalmente para comprimir listas invertidas) sobre malas tasas de compresión se deben a
entre 50 KB y 1 MB). Luego, cada blo- estas secuencias, obteniendo compre- que snappy puede detectar regularida-
que es comprimido por separado. Para sión. Sin embargo, las tasas de com- des dentro de una ventana muy pequeña
obtener una página web sólo se debe presión alcanzadas son menores a las del texto (aproximadamente 32 KB).
descomprimir el bloque que la contie- logradas con compresores estándar: Pero si en la primera etapa el texto se
ne, lo cual es eficiente en tiempo de 29% para TREC GOV2. Esto tiene una comprime con Turpin et al., esto signi-
búsqueda. Además, se logra una buena explicación teórica: este tipo de com- fica que artificialmente estamos permi-
tasa de compresión, porque las regula- presión basada sólo en la frecuencia tiendo que más regularidades quepan
ridades entre las páginas que conforman de las palabras se conoce como com- dentro de la ventana de compresión.
un bloque son eventualmente detecta- presión de orden 0. Los compresores Esto ha mostrado ser muy efectivo, ya
das por un compresor. Los resultados estándar, por otra parte, alcanzan com- que se alcanzan tasas de compresión del
de Ferragina y Manzini [18] muestran presión de orden superior: son capaces 12% con una velocidad de descompre-
que la Web textual puede comprimirse de detectar los contextos en que apare- sión de 4 milisegundos por consulta, e
a un 5% de su tamaño original usando cen las palabras, por lo tanto cuentan incluso tasas de compresión del 16%
compresores estándar. Esto fue muy con mayor información que les permite con una velocidad de descompresión
comentado en su momento, ya que es una mejor compresión. Para una con- de 0.5 milisegundos por consulta [6].
bastante menos que las tasas de compre- sulta, los 10 mejores resultados pueden Esto explica en parte cómo un motor
sión de 20% a 25% observadas en do- descomprimirse en sólo 0.2 milisegun- de búsqueda puede manejar grandes vo-
cumentos convencionales. La razón es dos, lo cual no afecta el tiempo total de lúmenes de texto, y a la vez responder
que el gran volumen de texto de la Web una consulta [6]. La practicidad de este consultas y mostrar snippets en pocas
contiene muchas repeticiones y regula- método ha hecho que algunos motores décimas de segundo.
57
TEORÍA DE LA
COMPUTACIÓN
58
TEORÍA DE LA
COMPUTACIÓN
59