我正嘗試使用ElasticSearch創建具有社交功能的商業搜索。我有一個企業目錄,用戶可以以不同的方式對這些企業的互動:通過回顧它們,檢查放進去,等ElasticSearch如何用於實現社交搜索?
當企業用戶搜索,我希望能夠向他們展示了他們的朋友在結果頂部與之交互的企業(或基於這些互動進行篩選)。 設置我的索引以達到此目的的最佳方式是什麼?
我能想到的有幾個可能的解決辦法,但我與ES一個初學者,我不知道什麼會引起問題:
我可以使用多tennancy並創建一個單獨的索引爲每個用戶。我排除了這一點,因爲用戶數量遠遠大於企業數量或用戶特定內容數量。
我可以添加用戶/得分對的列表,每個索引的業務。與業務交互的每個用戶都會在其中,並且分數將表示他們與業務進行的交互量(這足以滿足我的過濾/排序目的)。每次他們與業務互動時,我都會更新索引中的分數。問題在於我只關心朋友的活動,所以我需要找出一些方法,在爲業務創建綜合評分時考慮我的朋友是誰。我不知道如何在ES中做到這一點。
我可以創建一個類似的計劃,但不是讓我的相互作用的得分爲商業,得分將反映我的朋友與商家的互動。這消除了在ElasticSearch中對我的社交圖進行建模的需求,但這確實意味着只要有人與某個企業進行交互,我就需要更新他們所有朋友的分數。這也意味着每個企業的用戶/分數對列表將會更大,因爲它需要包括任何擁有與該企業進行互動的朋友的人。
最終的解決方案,我能想到的是要保持跟蹤發生在一個企業每一個人的互動,並把它添加到ES業務的文件。這對我來說似乎並不現實 - 它結合了其他解決方案的問題。但它可能是保持索引最新的最直接的方法。
感謝您的幫助!
我正面臨一個類似的問題 - 大家分享你最終怎麼做? – EugeneMi