[pyar] algoritmo para ads en django

Gonzalo Almeida flecox en gmail.com
Lun Jul 28 14:23:07 ART 2014


2014-07-28 13:13 GMT-03:00 Manuel Kaufmann <humitos en gmail.com>:
> A ver si algo así puede tirarte una idea o abrir una discusión:
>
> (es pseudocódigo que se parece a Django, no quiere decir que funcione)
>
> class Ads(models.Model):
>     product = models.ForeignKey('Product')
>     displays = models.IntegerField(default=0)  # this is global
>     user = models.ForeignKey('User', throught=Seen)
>
>     def get_ad_for_user(self, user):
>         # get all Ads not seen for this user and order by number of displays
>         ads = user.ads_set.filter(seen=False).order_by('displays')
>         # some random function is missing here
>         ad.seen = True
>         ad.displays += 1
>         ad.save()
>         return ad
>
>
> class Seen(models.Model):
>     user = models.ForeignKey('User')
>     seen = models.BooleanField(default=False)  # this is per-user
>
>  * con esto estaría diciendo que voy a tener un Ads por cada Product
> que exista en la DB (eso se puede hacer manejando una señal)
>  * además, para cada Ads guardo cuántas veces se mostró globalmente
> (displays) -cada vez que se selecciona ese Ads para mostrar le suma 1
>  * por otro lado, guardo una referencia a User en el Ads a través de
> otra tabla para saber si a ese usuario en particular ya se le mostró
> ese Ads
>
> Ahora bien, cuando llamo al método "get_ad_for_user" lo primero que
> hago es filtrar los Ads que ese User no ha visto todavía y después los
> ordeno por el número de veces que ese Ads fue mostrado globalmente y
> luego eligo uno aleatoriamente (funcion que no está definida en mi
> código) de los que tienen menos frecuencia.
>
> ¿Cómo lo ves?

me gusta..

el único problema que le veo..y no estoy seguro, es que el
ordenamiento puede ser costoso,
pensemos que cada vez que cargue un ad (puede haber varios por pagina)
se tendra que ejecutar esta query y tambien hacer una escritura.

saludos

>
> 2014-07-28 12:43 GMT-03:00 Gonzalo Almeida <flecox en gmail.com>:
>> Buenas,
>>
>> creo que Martín pregunto algo en el chat.. pero aqui mando los
>> requerimientos completos.. a ver si a alguno se le ocurre algo:
>>
>> tenemos que implementar un sistema de "ads" que muestran productos del sitio.
>>
>> el tema es el siguiente:
>>
>> 1) podemos tener varios ads en la misma pagina y no tienen que repetir productos
>> 2) si tenemos 1000 productos tenemos que tratar de mostrarlos
>> uniformemente y no mostrar siempre los mismos 100, tratar de mostrar
>> todos.
>> 3) tenemos que tratar de no repetir por usuario.
>>
>> asi que hay que tratar de no repetir a nivel de usuario y a nivel global.
>>
>> una idea era armar una lista de los 1000 ids de productos y crear una
>> shuffleada para cada usuario.
>> asi cumplimos que no se repiten para cada usuario. pero si nos puede pasar que:
>> 1) al agregar un nuevo producto tengamos que actualizar cada lista
>> appendeando el producto al ultimo de cada una.
>> 2) puede pasar que un producto sea visto varias veces a nivel global
>> (visto por varios usuarios) y otro no se vea nunca. asi que no se
>> cumple el requerimiento de que los productos se muestren uniformes a
>> nivel global.
>>
>> el principal problema es mantener la uniformidad a nivel global y a
>> nivel usuario y hacerlo rapido.
>>
>> pre-asignar una lista no estoy seguro que sea la solución yo creo que
>> deberiamos:
>> al momento de acceder a la pagina. ver  a nivel global cuales
>> productos son los "menos vistos" y de esos, mostrar los que el usuario
>> todavía no vio. teniendo en cuenta todos los casos y hacerlo muy
>> rapido.
>>
>> pero no se como :P
>>
>> alguna idea?
>>
>> muchisimas gracias por su tiempo :)
>>
>> --
>> Linux user #466939
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar
>
>
>
> --
> Kaufmann Manuel
> -- http://elblogdehumitos.com.ar
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar



-- 
Linux user #466939


More information about the pyar mailing list