2016-02-07 46 views
0

比方說,我有700000觀察具有某些屬性的產品,讓我們稱之爲標籤。什麼框架/ db爲基於內容的過濾提供了一個很好的解決方案?

並讓我們說我們有userX。我想實現一種簡單的基於內容的過濾方法:根據標籤計數/相關性對產品進行排名。 因此,可以說用戶X有一個偏好: - 黃 - 價格(0-15) - 名優產品

爲了得到一個建議,一個需要遍歷所有700.000意見(可在NoSQL數據庫來完成通過標籤進行標準化設置,但是當涉及多個標籤時仍然可以進行很多觀察),並計算特定產品中存在的標籤數量。

我可以用什麼框架或方法來快速做到這一點?即在幾秒鐘內得到結果?

有些事情我認爲是:

  • 純服務器的NodeJS
  • 純Python服務器
  • 的Neo4j圖形數據庫,但不知道如何關係可在此設置來實現?

回答

1

產品「觀察」是否包括用戶購買/交互?如果是這樣,像Neo4j的圖形數據庫,你可以模擬數據是這樣的:

enter image description here

這裏有誰購買了產品,其中該產品具有一個或多個標籤屬性的用戶。要生成一個基於內容的推薦,那麼你可以使用這樣的暗號查詢:

MATCH (u:User {name: "Bob"})-[:PURCHASED]->(p:Product) 
MATCH (p)-[:TAGGED]->(t:Tag) 
MATCH (t)<-[:TAGGED]-(rec:Product) WHERE NOT (u)-[:PURCHASED]->(rec) 
RETURN rec, count(*) AS weight ORDER BY weight DESC 

這個查詢實際上是說:「找到所有鮑勃已經購買了產品查找這些產品的標籤現在找到的產品與那些。相同的標籤,鮑勃還沒有購買。推薦這些產品給鮑勃,首先顯示具有最高數量的重疊標籤的產品。「

有關這方面的更多信息,請訪問in this videoin this tutorial

+1

對於一個真實世界的例子,這[博客文章](http://neo4j.com/blog/date-night-movie-neo4j/)今天剛剛出版,其中詳細介紹了基於內容的電影推薦。 –

+0

這看起來很有趣!其實,你的例子是我所需要的... – JohnAndrews

+0

我只需要補充一點:我有700.000件商品,購買數量應該是每個用戶最多50件。 neo4j可以處理這種性能嗎? – JohnAndrews

相關問題