基于用户喜欢的弹性电影推荐

时间:2016-04-18 13:42:18

标签: elasticsearch

我的目标是建立电影推荐系统。

我有两种类型:

mymovies

示例文档:

{
    "_index": "mymovies",
    "_type": "mymovie",
    "_id": "1",
    "_score": 1,
    "_source": {
     "title" : "Funny title is here"
     "genre" : "Comedy"
     "movieViews" : 901142
    }
}

用户

示例文档:

{
  "Name" : "Doni de brun",
  "moviesLiked": [122,185,231,292,1]      
}

第一个问题:如何为用户的每部电影提取类型?

第二个问题:我已经阅读了很多有关聚合,重要术语和得分的内容,但我仍然对何时使用内容感到困惑。

我意识到构建高效的推荐系统取决于我的需求,但仍然: 我应该提取类型,然后按流派和大多数movieViews搜索?或者也许使用custom_scoring用于那种系统?

1 个答案:

答案 0 :(得分:0)

让我们首先回答您关于如何使用Elasticsearch的具体问题。

  1. 要获取嵌套在索引中字段内的数据,您需要使用Nested Query。在这种情况下,您的"genre"字段将在隐藏文档内编制索引,如果不使用嵌套查询,则无法访问该文档。它与其他查询类型的工作方式类似,因此应该很容易上手和使用。
  2. 聚合是一种将搜索结果放入有用存储桶的方法。每种类型的聚合都关注返回结果的不同方面以创建这些存储桶。一个有效的用例将返回索引中的每个电影,并使用聚合按类型,运行时,演员,评级等对电影进行聚类。我使用聚合作为过滤工具的一部分取得了巨大的成功。用户点击其中一个返回的存储桶,只看到其中的项目,过滤掉所有剩余的结果。