2011-05-19 14 views
6

Estoy pensando en la creación de un 'pueblo que vieron esta también se ve' lista que se ve en Amazon, Yelp y otros sitios en línea. En este momento estoy pensando en crear una nueva tabla con 'product_id', 'last_viewed_product_id', 'hits' donde cuando un usuario pasa de una página para product_id = 100 a product_id = 101, creará/actualizará esta tabla con product_id = 101, last_viewed_product_id = 100 e incrementa el valor de 'hits'. ¿Hay mejores métodos que estén más optimizados y menos intensivos en cómputo?creación de un 'Las personas que vieron esta también se ve' lista

Respuesta

4

Mejor yo sepa, los "trucos" utilizados por Amazon para hacer cosas menos computacionalmente intensivas es a) usar bayesianos Stats/medias y b) calcular los agregados parciales. Este último le permite no tener que contar todo (en su lugar puede sumar los agregados precalculados). El primero te permite inyectar lo que infieres será material relacionado.

4

Parece que vas por el camino correcto - algunas sugerencias -

Para computacionalmente intensivas - es probable que desee almacenar en caché los resultados, por lo que sólo va a dar un número superior 'x' que es actualizado una vez al día o similar a ese efecto. El tiempo real no parece significativo en este caso.

No estoy seguro de qué tipo de productos tiene en su sitio, pero si la variedad es significativa, es posible que solo quiera poner elementos que tengan información relacionada para mostrarse (por lo que Star Wars solo habría relacionado a Star Wars artículos apareciendo).

Así que si usted tiene "etiquetas" para sus productos o palabras clave, es posible que desee utilizar una relación con eso.

También es posible que desee crear un peso sobre cómo han llegado a un producto. Si llegaron al producto haciendo clic en la lista que proporcionó, entonces ese tipo de elementos continuará llenándose, y no le darán a otros productos la oportunidad de aparecer, por lo tanto, dele un poco de peso. Los elementos más pesados ​​aparecerían en su lugar.

2

Si tiene identificadores de usuario para todos sus visitantes (puede crear temporales para usuarios no registrados), puede crear una tabla de historial con columnas ID_usuario y ID_producto, que almacena todos los productos que los usuarios han visitado. Luego, cuando un usuario abre un producto, realice una consulta que busque los user_ids que han visto ese producto recientemente y luego únalo a los productos que esos usuarios abrieron. Luego, simplemente clasifique los productos por los cuales se han abierto más esos user_ids.

Asegúrese de almacenar en caché esto como la unión ralentizaría cualquier servidor SQL.

Cuestiones relacionadas