Apresentando os resultados do solr mesclados com dados individuais do usuário
Pergunta
Estou procurando uma estratégia para apresentar a classificação de um usuário individual em um documento Solr. ou seja. Os usuários podem colocar uma classificação 1-5 em um documento e eu quero apresentá-lo de volta à medida que pesquisam.
Eu posso pensar em duas abordagens gerais.
Armazene as classificações no meu RDBMS e consulte -o depois de obter os resultados do Solr e mesclar os dados na lógica de negócios.
De alguma forma, também armazene essas informações de classificação no Solr, para que ele volte com os dados para um determinado usuário. Tudo o que consigo pensar são os nomes de atributos com o UserID e um valor de classificação.
Assumindo uma grande base de usuários, a abordagem de preocupações 2 pode ficar fora de controle. Quão "largo" você pode ir com um documento Solr? Você pode colocar dezenas de milhares de atributos em um documento? O impacto do desempenho ainda deixaria a abordagem 2 melhor do que um segundo golpe em um sql db (abordagem 1)?
Existem outras abordagens em que não estou pensando?
Solução
Eu usei o número da abordagem 1. Como o número de classificações é baixo (provavelmente menor que 1000) por usuário, eu apenas cache todas as suas classificações após o login e armazenam na memória. Então, ao mostrar os resultados do Solr, é muito rápido aplicar as classificações quando necessário.
Isso evita que você tenha uma chamada de banco de dados para cada resultado e não atenda muito ao servidor. Além disso, quando um usuário atualiza suas classificações, você apenas atualiza o banco de dados e invalida o cache. Você não precisa fazer uma chamada de atualização para um documento Solr.
Outras dicas
Uma terceira opção pode ser adicionar um índice SOLR adicional que contém apenas o ID do documento, o ID do usuário e a pontuação AATtribued a esse documento pelo usuário. Seria muito simples e rápido consultar a pontuação pelo Document & User.
Eu iria com o número 2 e apenas atualizaria periodicamente a classificação. Dessa forma, você pode se misturar na classificação na pontuação de relevância calculada pelo Solr.
Eu acho que depende se você é como Digg/Reddit, onde a votação para cima/para baixo afeta drasticamente o que é mostrado, ou se é apenas mais um fator na pontuação, como o novo documento. Se for apenas mais um fator, atualize seu documento uma vez por dia, uma semana ou uma vez por mês nas horas tranquilas ....