Présentation des résultats de SOLR ont fusionné avec les données de chaque utilisateur

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

  •  26-09-2019
  •  | 
  •  

Question

Je suis à la recherche d'une stratégie pour présenter la note d'un utilisateur sur un document solr. c'est à dire. Les utilisateurs obtiennent de mettre donner une note 1-5 sur un document et je veux présenter que revenir à eux dans leur recherche.

Je peux penser à deux approches générales.

  1. Stocker les notes sur mon SGBDR et requête après l'obtention de résultats de Solr et fusionner les données dans la logique métier.

  2. D'une certaine façon aussi stocker cette information de notation solr il revient avec les données pour un utilisateur donné. Tout ce que je peux penser est les noms d'attributs avec l'ID utilisateur et une valeur de note.

En supposant une grande base d'utilisateurs, je vous inquiétez approche 2 pourrait sortir de la main. Comment « large » pouvez-vous aller avec un document solr? Pouvez-vous mettre des dizaines de milliers d'attributs d'un document? Est-ce que l'impact sur les performances laissent encore 2 approche mieux qu'un deuxième coup sur une db sql (approche 1)?

Y at-il d'autres approches que je ne pense pas à?

Était-ce utile?

La solution

Je l'ai utilisé le numéro d'approche 1. Comme le nombre de notes est faible (probablement moins de 1000) par utilisateur, mettre en cache simplement toutes leurs notes lors de la connexion et de stocker en mémoire. Puis, lors de l'affichage des résultats de SOLR, il est très rapide à appliquer que les évaluations en cas de besoin.

Cela vous évite d'avoir un appel de base de données pour chaque résultat et ne bog pas trop bas le serveur. De plus, lorsqu'un utilisateur met à jour leurs évaluations, vous mettez à jour juste le DB et annuler le cache. Vous ne devez pas faire un appel UPDATE à un document SOLR.

Autres conseils

Une troisième option pourrait être d'ajouter un index Solr supplémentaire qui contient seulement l'identifiant du document, l'ID utilisateur et le score aattributed à ce document par l'utilisateur. Il serait alors très simple et rapide pour interroger le score par le document et l'utilisateur.

J'aller avec le numéro 2, et seulement mettre à jour périodiquement la cote. De cette façon, vous pouvez mélanger dans la note dans la pertinence score calculé par Solr.

Je pense que cela dépend si vous êtes comme Digg / Reddit, où le haut / bas vote de façon drastique les effets ce qui est montré, ou si elle est juste un autre facteur dans la notation, comme la façon dont le nouveau document. Si c'est juste un autre facteur, puis mettez à jour votre document une fois par jour, une semaine ou une fois par mois dans les heures de calme ....

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top