乐趣区

关于elasticsearch:用-ElasticSearch-实现-猜你喜欢-智能推荐

支流电商平台有一个很常见的性能:“猜你喜爱”智能举荐,对用户做了精准画像,算法简单,而一般的我的项目中,因为内容规模无限,便用 ElasticSearch 根本能够实现根底需要

在咱们开发的 店熵 SAAS 平台(shopfai.com)我的项目中应用了本文中的计划,比较稳定,用户体验还不错。

实现思路:

  1. 拜访某个商品时,提取此商品的关键词,写入 ES 历史关键词(索引名示例:history_keywords)
  2. 聚合 ES 历史关键词 中的所有关键词,提取呈现最多的前几个
  3. 用提取出这几个关键词再次查问商品,作为“猜你喜爱”举荐后果

几个外围控制点:

  1. ES 历史关键词 须要管制总数量,只保留最近拜访的数据,能够用 Redis 实现一个循环记数器,计数器的值作为 ES 记录的 ID 写入,实现 ES 数据的循环写入,这个数量取多少适合,跟据具体我的项目调整优化,1000 亦可,10000 亦可,会间接影响举荐后果
  2. 聚合 ES 历史关键词时,具体取几个需理论优化调整,咱们我的项目中取了 10 个
  3. 当用户首次拜访时,尚无历史关键词数据,这时候能够取“热搜词”(热搜词性能需另外实现)

简化流程图:

 

外围的 ES 查问语法:

提取商品名称里的关键词:

POST /_analyze
{
    "tokenizer" : "ik_smart",
    "text": "商品名称 ABC"
}

因为不同语言封装办法不同,这里只贴了 原生 诘法,分词器中文用了 ik_smart,依据具体情况调整

从历史关键词中提取呈现最多的前几个:

POST /history_keywords
{
    "size":0,
    "query":{
        "bool":{
            "filter":[
                {
                    "term":{"user_id":"123"}
                }
            ]
        }
    },
    "aggs":{
        "topN":{
            "terms":{
                "field":"keyword",
                "size":10
            }
        }
    }
}

history_keywords 里只有两个字段 用户 ID(user_id),关键词(keyword)

最初,用这几个关键词查问商品,代码不贴了。

本文原始网址:https://www.liu12.com/article/es-guess-you-like,转载请保留出处

退出移动版