es中文分词怎么分的啊 es 分词器 商品搜索

   日期:2024-12-25    作者:ysmon 移动:http://mip.riyuangf.com/mobile/quote/15026.html


本文主要介绍在Elasticsearch中实现商品搜索功能

  • Elasticsearch有默认的分词器,默认分词器只是将中文逐词分隔,并不符合我们的需求。
  • 需要安装与Elasticsearch版本相同的ik分词器,ik分词器将小米手机分为小米和手机,符合我们的要求。

在商品信息实体类中用@Document、@Field等注解。对于需要中文分词的字段,我们直接使用@Field注解属性设置为ik_max_word。

先实现一个最简单的商品搜索功能,搜索包括商品名称,商品简介,商品标签中包含指定的关键字的商品和一个直接根据商品分类进行查询商品的功能

  • 在SpringBoot中实现,使用Elasticsearch Repositories的衍生查询来搜索;
  • 衍生查询其实原理很简单,就是将一定规则方法名称的方法转化为Elasticsearch的Query DSL语句,看完下面这张表你就懂了。

接下来我们来实现一个复杂的商品搜索,涉及到过滤、不同字段匹配权重不同以及可以进行排序。

  • 首先来说下我们的需求,按输入的关键字搜索商品名称、商品简介和 商品标签,默认按相关度进行排序;
  • 这里我们有一点特殊的需求,比如商品名称匹配关键字的的商品我们认为与搜索条件更匹配,其次是商品简介和商品标签,这时就需要用到查询了;
  • 在Elasticsearch中搜索到文档的相关性由字段来表示的,文档的字段值越高,表示与搜索条件越匹配,而查询可以通过设置权重来影响字段值,使用它我们就可以实现上面的需求了;
  • 在SpringBoot中实现,使用Elasticsearch Repositories的search方法来实现,但需要自定义查询条件QueryBuilder;

当我们查看相关商品的时候,一般底部会有一些商品推荐,这里使用Elasticsearch来简单实现下。

  • 首先来说下我们的需求,可以根据指定商品的ID来查找相关商品;
  • 这里我们的实现原理是这样的:首先根据ID获取指定商品信息,然后以指定商品的名称、商品简介、商品标签和分类来搜索商品,并且要过滤掉当前商品,调整搜索条件中的权重以获取最好的匹配度;
  • 在SpringBoot中实现,使用Elasticsearch Repositories的search方法来实现,但需要自定义查询条件QueryBuilder;

Github

Swagger UI 文档

知识只有分享出来才有价值。如果有问题的话,可以在关于我的页面,通过我的邮箱联系我进行探讨。


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号