Apresentando os resultados do solr mesclados com dados individuais do usuário

StackOverflow https://stackoverflow.com/questions/3434737

  •  26-09-2019
  •  | 
  •  

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.

  1. 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.

  2. 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?

Foi útil?

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 ....

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top