elasticsearch使用more_like_this实现基于内容的推荐

基于内容的推荐通常是给定一篇文档信息,然后给用户推荐与该文档相识的文档。Lucene的api中有实现查询文章相似度的接口,叫MoreLikeThis。Elasticsearch封装了该接口,通过Elasticsearch的More like this查询接口,我们可以非常方便的实现基于内容的推荐。

先看一个查询请求的json例子:

GET /mychat/mytype/_search
{
   "query":{   
        "more_like_this":{   
            "fields" : ["ask", "answer"],   
            "like" : "中国" ,
            "min_term_freq" : 1,
            "max_query_terms" : 12
        }   
    }  
}

其中:
fields是要匹配的字段,如果不填的话默认是_all字段

like_text是匹配的文本。

除此之外还可以添加下面条件来调节结果

percent_terms_to_match:匹配项(term)的百分比,默认是0.3

min_term_freq:一篇文档中一个词语至少出现次数,小于这个值的词将被忽略,默认是2

max_query_terms:一条查询语句中允许最多查询词语的个数,默认是25

stop_words:设置停止词,匹配时会忽略停止词

min_doc_freq:一个词语最少在多少篇文档中出现,小于这个值的词会将被忽略,默认是无限制

max_doc_freq:一个词语最多在多少篇文档中出现,大于这个值的词会将被忽略,默认是无限制

min_word_len:最小的词语长度,默认是0

max_word_len:最多的词语长度,默认无限制

boost_terms:设置词语权重,默认是1

boost:设置查询权重,默认是1

analyzer:设置使用的分词器,默认是使用该字段指定的分词器

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Elasticsearch是一种流行的搜索引擎,可以用于实现推荐功能。 推荐系统通常是基于用户行为和偏好来生成推荐列表的。下面是一些步骤来实现使用Elasticsearch实现推荐功能的示例: 1. 收集用户数据:收集用户行为历史和偏好,例如搜索历史、购买历史、查看历史和评级等。 2. 创建索引:使用Elasticsearch创建索引,包括用户数据和产品目录数据。 3. 编写查询:编写查询来检索相关的产品,例如使用用户搜索历史和偏好来查找与用户兴趣相关的产品。 4. 实现推荐算法:使用机器学习算法(如协同过滤或内容过滤)来根据用户行为和偏好生成推荐列表。 5. 过滤和排序:使用Elasticsearch的过滤和排序功能来过滤和排序生成的推荐列表,以确保最终推荐列表与用户的兴趣相关。 示例代码: ```python # 创建索引 PUT /users { "mappings": { "properties": { "user_id": {"type": "integer"}, "search_history": {"type": "text"}, "purchase_history": {"type": "text"}, "view_history": {"type": "text"}, "ratings": {"type": "float"} } } } PUT /products { "mappings": { "properties": { "product_id": {"type": "integer"}, "product_name": {"type": "text"}, "description": {"type": "text"}, "category": {"type": "text"}, "price": {"type": "float"} } } } # 编写查询 GET /products/_search { "query": { "bool": { "should": [ {"match": {"product_name": "laptop"}}, {"match": {"description": "gaming"}}, {"match": {"category": "computers"}} ] } } } # 实现推荐算法 POST /users/_search { "query": { "more_like_this": { "fields": ["search_history", "purchase_history", "view_history"], "like": "iphone", "min_term_freq": 1, "max_query_terms": 12 } } } # 过滤和排序 GET /products/_search { "query": { "bool": { "must": [ {"match": {"category": "computers"}}, {"range": {"price": {"gte": 500, "lte": 2000}}} ] } }, "sort": [ {"price": {"order": "asc"}}, "_score" ], "size": 10 } ``` 以上是一个简单的使用Elasticsearch实现推荐系统的示例,你可以根据具体需求进行调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个高效工作的家伙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值