Executando verificação de segurança...
7

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?

Carregando publicação patrocinada...
5

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!

3

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

1

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.