Frage

Ich bin auf der Suche nach einer Strategie eines einzelnen Benutzers Rating auf einem solr Dokument zu präsentieren. dh. Benutzer erhalten eine Bewertung von 1 bis 5 auf ein Dokument zu setzen geben, und ich möchte, dass zu ihnen zurück zu präsentieren, wie sie suchen.

Ich kann mir zwei allgemeine Ansätze.

  1. Speichern Sie die Bewertungen in meiner RDBMS und Abfrage es nach solr Ergebnisse zu erzielen und die Daten in Business-Logik zusammenführen.

  2. Irgendwie auch speichert diese Bewertung Info in solr so dass es wieder mit den Daten für einen bestimmten Benutzer kommt. Alles, was ich von Attributen Namen mit der Benutzer-ID und einem Wert von Rating denken kann.

eine große Nutzerbasis Unter der Annahme, bin ich sehr besorgt Ansatz 2 von Hand bekommen konnte. Wie „breit“ können Sie mit einem solr Dokument gehen? Können Sie Zehntausende von Attributen auf ein Dokument setzen? Würde die Auswirkungen auf die Leistung noch verlassen Ansatz 2 besser ist als ein zweiter Treffer auf einer SQL-Datenbank (Ansatz 1)?

Gibt es andere Ansätze, die ich bin nicht zu denken?

War es hilfreich?

Lösung

Ich habe 1. Ansatz Nummer verwendet Da die Anzahl der Bewertungen niedrig ist (wahrscheinlich weniger als 1000) pro Benutzer, ich habe gerade alle ihre Bewertungen bei der Anmeldung und im Speicher ablegen zwischenzuspeichern. Dann, wenn die SOLR Ergebnisse zeigen, ist es sehr schnell, nur die Ratings gelten, wo nötig.

Das erspart Sie einen Datenbank-Aufruf mit für jedes Ergebnis und biegt den Server nicht zu viel. Plus, wenn ein Benutzer ihre Ratings aktualisiert, aktualisieren Sie nur die DB und den Cache ungültig machen. Sie müssen keine UPDATE Anruf zu einem SOLR Dokument machen.

Andere Tipps

Eine dritte Möglichkeit könnte sein, einen zusätzlichen Solr-Index hinzuzufügen, die nur die Dokument-ID enthält, Benutzer-ID und den in dieses Dokument durch den Benutzer aattributed Punktzahl. Es wäre dann sehr einfach und schnell die Partitur von Dokument & Benutzer abzufragen.

Ich würde mit der Nummer 2, und nur in regelmäßigen Abständen die Bewertung aktualisieren. Auf diese Weise können in der Bewertung in die Relevanz mischen kann durch Solr-Score berechnet.

Ich denke, es hängt davon ab, wenn Sie wie Digg / Reddit, wo die oben / unten drastisch Auswirkungen der Abstimmung, was gezeigt wird, oder ob es nur ein weiterer Faktor in Scoring, wie, wie neu das Dokument. Wenn es nur ein weiterer Faktor ist, aktualisieren Sie dann das Dokument einmal einen Tag, eine Woche oder einmal im Monat in den ruhigen Stunden ....

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top