Wie kann ElasticSearch zur Implementierung der sozialen Suche verwendet werden?

Ich versuche, mit ElasticSearch eine Unternehmenssuche mit sozialen Funktionen zu erstellen. Ich habe ein Unternehmensverzeichnis, und Benutzer können auf unterschiedliche Weise mit diesen Unternehmen interagieren: durch Überprüfen, Einchecken usw.

Wenn ein Benutzer nach einem Unternehmen sucht, möchte ich ihm oben in den Ergebnissen die Unternehmen anzeigen, mit denen seine Freunde interagiert haben (oder basierend auf diesen Interaktionen filtern).Wie richte ich meinen Index am besten ein, um dies zu erreichen?

Ich kann mir ein paar mögliche Lösungen vorstellen, aber ich bin ein Anfänger mit ES und ich bin nicht sicher, was Probleme verursachen wird:

Ich könnte Multi-tennancy verwenden und einen separaten Index für jeden Benutzer erstellen. Ich habe dies ausgeschlossen, weil die Anzahl der Benutzer viel größer ist als die Anzahl der Unternehmen oder die Anzahl der benutzerspezifischen Inhalte.

Ich könnte jedem indizierten Unternehmen eine Liste von Benutzer / Punktzahl-Paaren hinzufügen. Jeder Benutzer, der mit dem Unternehmen interagiert hat, ist dabei, und die Punktzahl gibt die Interaktion an, die er mit dem Unternehmen hatte (dies ist für meine Filter- / Sortierzwecke ausreichend). Jedes Mal, wenn sie mit dem Unternehmen interagieren, aktualisiere ich die Punktzahl im Index. Das Problem dabei ist, dass ich mich nur um die Aktivitäten meiner Freunde kümmere, sodass ich einen Weg finden müsste, um zu berücksichtigen, wer meine Freunde sind, wenn ich eine zusammengesetzte Punktzahl für das Unternehmen erstelle. Ich weiß nicht, wie ich das in ES machen soll.

Ich könnte ein ähnliches Schema erstellen, aber anstatt meine Interaktionen mit einem Unternehmen zu bewerten, würde die Bewertung die Interaktionen meiner Freunde mit dem Unternehmen widerspiegeln. Dadurch entfällt die Notwendigkeit, mein soziales Diagramm in ElasticSearch zu modellieren. Dies bedeutet jedoch, dass ich jedes Mal, wenn eine Person mit einem Unternehmen interagiert, die Punktzahlen aller Freunde aktualisieren muss. Dies würde auch bedeuten, dass die Liste der Benutzer / Punktzahl-Paare für jedes Unternehmen größer wäre, da alle Personen einbezogen werden müssen, die einen Freund haben, der mit dem Unternehmen interagiert hat.

Die endgültige Lösung, die ich mir vorstellen kann, besteht darin, jede einzelne Interaktion, die mit einem Unternehmen einhergeht, im Auge zu behalten und dem Unternehmensdokument in ES hinzuzufügen. Dies erscheint mir nicht realistisch - es kombiniert die Probleme der anderen Lösungen. Dies ist jedoch wahrscheinlich der einfachste Ansatz, um den Index auf dem neuesten Stand zu halten.

Danke für Ihre Hilfe!

Antworten auf die Frage(5)

Ihre Antwort auf die Frage