Quem se interessou por isso, também procurou por...
Fala, Galera! Estou em um dos meus primeiros projetos (freela) como programador fullstack. O projeto está sendo desenvolvido com React/Nextjs, TailwindCSS e usa um banco de dados Postgres. Me deparei com uma parte do protótipo do projeto que é basicamente alguns cards na página de produto com um título acima deles que diz: "Quem se interessou por esse isso, também procurou por..." e não faço a mínima idéia de como implementar o filtro que vai rederizar esses cards. Alguém de vocês já se deparou com isso? Se sim, quais as alternativas?
Para implementar a funcionalidade 'Quem se interessou por isso, também procurou por...', recomendo estudar sistemas de recomendação, que variam desde o trivial ao muito complexo, para um protótipo porém se atenha ao simples.
Uma abordagem trivial por exemplo: Suponha que você tenha tabelas para carrinhos e produtos. Faça uma consulta SQL que selecione produtos com base na frequência com que aparecem nos mesmos carrinhos do produto visitado, ordenando os resultados pela frequência e limitando aos 5 primeiros resultados, por exemplo. Este é um método que pode ser implementado com algumas linhas de SQL.
CREATE OR REPLACE FUNCTION get_product_recommendations(given_product_id INT)
RETURNS TABLE(product_id INT, frequency INT) AS $$
BEGIN
RETURN QUERY
WITH RelevantCarts AS (
SELECT cart_id
FROM carts
WHERE product_id = given_product_id
),
ProductFrequency AS (
SELECT p.product_id, COUNT(*) as frequency
FROM carts c
JOIN products p ON c.product_id = p.product_id
WHERE c.cart_id IN (SELECT cart_id FROM RelevantCarts)
AND p.product_id != given_product_id
GROUP BY p.product_id
)
SELECT product_id, frequency
FROM ProductFrequency
ORDER BY frequency DESC
LIMIT 5;
END;
Aí é so chamar essa função diretamenta do seu JS, SELECT product_id FROM get_product_recommendations(id);
Caso seja do seu interesse aprender mais sobre sistemas de recomendação, alguns livros para orientar seus estudos: Recommender Systems: An Introduction; Practical Recommender Systems; Recommender Systems: The Textbook.
Um abraço e bons estudos!
tem varios jeitos de implementar isso ai:
-uma lista fixa onde manualmente são relacionados os produtos
-um algoritmo que olha pedidos anteriores e "lista o que foi comprado junto"
-implementar um algoritmo de data science para gerar essas recomendações pra vc tambem com base nos pedidos anteriores mas levando em consideração quão similares são os outros produtos
O objetivo é: dado um produto, obter uma pequena lista de produtos comumente relacionados.
O pseudo-código abaixo pode ajudar:
funcao produtos_relacionados(cod_produto, max_itens): lista_codigos
vendas = listar_vendas_em_que_aparece(cod_produto)
produtos = listar_produtos_vendas(vendas)
agrupamento = contar_ocorrencia_produtos(produtos)
retorna agrupamentos[0, max_itens]
Conforme oraculo bem disse, há inúmeras formas de resolver, todas válidas. A solução que eu entreguei se assemelha à segunda sugestão dele e está um pouco mais detalhada. É a mais simples, pode ser entregue em menor tempo e sem guinadas bruscas.