Jak można wykorzystać ElasticSearch do wdrożenia wyszukiwania społecznego?

Próbuję utworzyć wyszukiwanie biznesowe z funkcjami społecznościowymi za pomocą ElasticSearch. Mam katalog firm, a użytkownicy mogą wchodzić w interakcje z tymi firmami na różne sposoby: przeglądając je, sprawdzając, itp.

Gdy użytkownik szuka firmy, chciałbym móc pokazać im firmy, z którymi ich znajomi współpracowali na szczycie wyników (lub filtrować na podstawie tych interakcji).Jaki jest najlepszy sposób na ustawienie mojego indeksu, aby to osiągnąć?

Mogę myśleć o kilku możliwych rozwiązaniach, ale jestem początkującym z ES i nie jestem pewien, co spowoduje problemy:

Mógłbym użyć multi-tennancy i utworzyć osobny indeks dla każdego użytkownika. Wykluczyłem to, ponieważ liczba użytkowników jest znacznie większa niż liczba firm lub ilość treści specyficznych dla użytkownika.

Mogę dodać listę par użytkowników / wyników do każdej zaindeksowanej firmy. Każdy użytkownik, który wchodził w interakcję z biznesem, byłby tam, a wynik reprezentowałby ilość interakcji, jaką mieli z firmą (jest to wystarczające dla moich celów filtrowania / sortowania). Za każdym razem, gdy wchodzą w interakcję z firmą, aktualizuję wynik w indeksie. Problem polega na tym, że zależy mi tylko na aktywności moich przyjaciół, więc musiałbym wymyślić jakiś sposób, aby wziąć pod uwagę, kim są moi przyjaciele podczas tworzenia złożonego wyniku dla firmy. Nie wiem, jak to zrobić w ES.

Mógłbym stworzyć podobny schemat, ale zamiast zachować wynik moich interakcji z firmą, wynik odzwierciedlałby interakcje moich znajomych z firmą. To eliminuje potrzebę modelowania mojego wykresu społecznościowego w ElasticSearch, ale oznacza to, że za każdym razem, gdy ktoś wchodzi w interakcję z firmą, musiałbym zaktualizować wszystkie wyniki swoich znajomych. Oznaczałoby to również, że lista par użytkowników / wyników dla każdej firmy byłaby większa, ponieważ musiałaby ona obejmować każdego, kto ma znajomego, który kontaktował się z firmą.

Ostatnim rozwiązaniem, o którym myślę, jest śledzenie każdej indywidualnej interakcji, która ma miejsce w firmie, i dodawanie jej do dokumentu biznesowego w ES. Nie wydaje mi się to realistyczne - łączy problemy z innymi rozwiązaniami. Ale jest to prawdopodobnie najprostsze podejście do aktualizowania indeksu.

Dzięki za pomoc!

questionAnswers(5)

yourAnswerToTheQuestion