Duda de domingo a la noche. Si Yahoo! o Google o cualquier otro buscador se hacen marketing cuando uno hace una búsqueda y aparece una frase como "Resultados 1 - 10 de aproximadamente XX millones" ¿porque sólo muestran mil resultados?
Buscando Dark Matter o (Materia Oscura en la Wikipedia) en google me dice que hay 16 millones de resultados y yahoo! search me dice que hay 25 millones ¿entonces porque ambos me muestran SOLO mil?
Quizas... si no encuentro mi respuesta en los primeros mil resultados estoy buscando otra cosa, o tal vez más allá de mil resultados no son capaces de extender sus algoritmos de relevancia o si sigo navegando probablemente esté sólo probando la potencia del buscador... Pero si sólo me van a mostrar mil resultados ¿porque me dicen que hay millones de ellos?
eso me pasa por estar en el MSN con DeMairena
Una forma de solucionar este problema es usar la nueva versión de My Web. El nuevo servicio de Yahoo! muestra los resultados que realmente el usuario desea encontrar y no se pierde o desvía mostrando búsquedas que realmente no interesan para nada. Además los resultados y búsquedas se pueden ordenar, guardar e incluso compartir con otros usuarios.
Cuando te toque desarrollar cualquier cosa relativa a calidad de datos, obtención de información, relación automática o extracción de enunciados, te vas a dar cuenta de muchas cosas que a quienes lo hemos hecho nos parecen obvias.
Por ejemplo, ¿dónde guardás el “working set del usuario”? Si lo guardás, te comés un espacio de almacenamiento (que deberá tener un límite); si no lo guardás, entonces las páginas siguientes tendrán una demora adicional que, en el largo plazo, puede ser importante. Más aún: esa demora no es sólo para el usuario que consulta sino que es tiempo de procesamiento del motor.
Pensá un poquito más profundo. Saludos.
ignacio.. gracias por tu buena onda y aporte (el de siempre bah)
La gran ventaja que tengo es que como no se.. pregunto a ver si alguien puede darme una respuesta, lastima que la tuya es incompleta porque no todo el mundo sabe que es un Working Set ni sabe cual es el costo de almacenamiento o no entiende porque ese costo es tan importante para un motor de busqueda.
No es pensar profundo, es no saber el porque de algo y preguntarlo.. afortundamente tengo gente copada como vos que me da una manito :)
anoche te decía que no estaba para buscar la referencia de quién lo había notado, ahora que estoy más despierto sí:
http://www.alwayson-network.com/comments.php?id=10967_0_4_0_C
¿alguien le traduce la rta. de Ignacio a Dave Sifry, de Technorati? ;)
Bueno, si realmente interesa te cuento más. Las búsquedas en base de datos tienen un costo compuesto por varios factores. Los motores más inteligentes (naturalmente estimamos que Google es uno de ellos) no devuelven a la aplicación que requiere un conjunto con la totalidad de los resultados, sino lo que se llama un “cursor,” esto es, la posibilidad de obtener el o los resultados que se deseen de forma secuencial.
Una vez que la aplicación los tiene, si son muchos, permitirá recorrer los mismos al usuario por bloques. Y ahí viene el punto de decisión.
a) Si considero que los usuarios van a utilizar mayormente (un % muy alto de las veces) la primera o las pocas primeras páginas, o bien si tengo un esquema de “granja” donde no hay información de sesión que se comparta entre servidores, entonces cuando el usuario pida la segunda, voy a obtener el cursor desde la base y voy a saltear (skip) hasta el primer resultado presentable en la segunda página. El problema de este esquema es que el “costo” (el tiempo de uso de mi facilidad de base de datos, procesador, acceso a disco) es mayor para obtener la página 2 que la 1 y así sucesivamente. Entonces voy a impedir que pidan un número demasiado alto de página para que no perjudiquen la disponibilidad de mi servicio.
b) Si realmente considero que hay muchas chances de que el usuario pida las enésimas páginas, entonces puedo evitar el costo adicional, salvando el resultado completo en alguna parte (memoria, disco) listo para que venga el pedido de la segunda página. Pero el gasto será proporcional al número de usuarios y aún si tengo un gran poder de procesamiento, voy a querer ponerle un límite al asunto.
Volviendo a la retórica del artículo original, vg, por qué se muestran (aprox) cuántos son los resultados si no me los van a permitir acceder, la respuesta sería porque el dato es útil más allá de acceder al contenido (p.ej. para conocer la selectividad de una consulta).
Mariano: si no me interesara en general lo que decís, no estaría suscripto. Antes bien, me parece que como lector tengo derecho a impulsarte a pensar más a fondo.
Saludos cordiales desde la Cordial.
Muchas veces dudo de la imparcialidad de los grandes “buscadores”.
Alguien conoce algun buscador “imparcial” en serio? Alguno en donde aparezca todo? No solamente lo que los jonnies quieren que aparezca
Besos
No entendí igual tu razonamiento, Mariano… O sea, a mí me interesa tener la información de si los resultados son 15 o 20 millones más allá del número de resultados que pueda ver.
O sea, me interesa saber que hay 30 millones de argentinos aunque solo vaya a encontrarme con 15. Son dos informaciones independientes.
Y por supuesto que es cierto que hay un porcentaje ínfimo de usuarios que mira el resultado 1001. Lo que no entiendo del todo es por qué igual google no te da esa opción… si querés ver el resultado 1001, cuando lo pedís podrías pagar la penalidad de una nueva búsqueda en la base de datos y listo (te jodés por ser distinto a la mayoría de los usuarios, eso no es muy justo pero es muy práctico).
Habría que preguntarle a Diego que opina respecto a este tema.
Ignacio, todo bien… este comentario tuyo me parece bueno y a mi me suma mas que me digas “pensá profundo” de hecho.. siempre digo que mis lectores saben mas que yo y eso es una de las cosas buenas d etener un blog.
xtian, totalmente de acuerdo, pero diego ahora no lee ni escribe mas :P