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
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.
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.
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.
Estoy bastante seguro de que Amazon utiliza Association Rules para esto.
El artículo seminal:
http://dl.acm.org/citation.cfm?id=170072
El algoritmo rápido (FP-Crecimiento):
http://link.springer.com/chapter/10.1007/3-540-47887-6_34#page-1
no hemos visto una librería PHP, pero no son para Java, Python .
- 1. Cómo obtener la lista de archivos que se vieron afectados desde una revisión específica en Mercurial
- 2. ¿Por qué esta línea de cierre de Google se ve como se ve?
- 3. Impide que las personas refresquen la página
- 4. C# método que acepta un predicado: ¿se ve bien?
- 5. ¿Cómo evitan estas personas la creación de basura?
- 6. ¿Las etiquetas de git también se presionan?
- 7. Creación de un árbol con SQLite lista
- 8. ¿Un amigo ve las clases base?
- 9. ¿Evita que las personas presionen un commit de git con un nombre de autor diferente?
- 10. ¿Cómo se ve un Data Mapper?
- 11. ¿Cómo se ve un servicio web Node.js?
- 12. ¿Cómo se permite que varias personas presionen a github?
- 13. Obtener información de las personas que llaman en python
- 14. ¿Cómo se ve un branchless en C++?
- 15. SQL seleccionar a las personas que podrías conocer
- 16. ¿Cómo se ve un encabezado zlib?
- 17. Campos que las personas capturan al iniciar sesión - log4net
- 18. ¿Cómo evito que las personas hagan XSS en Spring MVC?
- 19. Sólo hay una gota de elemento que se ve
- 20. Pthread: ¿Por qué las personas se molestan en utilizar pthread_exit?
- 21. ¿Cómo se ve tu .conkerorrc?
- 22. ¿Cómo se ve un objeto en la memoria?
- 23. Creación de un constructor de copia de una lista enlazada
- 24. Guardia no ve las actualizaciones de archivos
- 25. ¿Por qué esta imagen se ve tan mal después de ser reducida en Java?
- 26. Google Map se ve extraño
- 27. ¿SSL también encripta las cookies?
- 28. ¿Cómo almacenar la lista de direcciones IP en la lista C# para que también se pueda buscar en subredes?
- 29. Opciones para colapsar YAML cuando se ve?
- 30. centro text-align que se ve afectado por elementos flotantes