写一下个人spark实现的es completion suggester,目录如下,
1. Overview
2. 补全功能
- 整体架构
- 分词
- 检索历程
3. 纠正功能
- 待实现
4. 存在问题
5. Reference
检索建议suggestion(补全completion和纠正correction)是提升用户搜索体验的一个重要功能,通过协助用户输入更精准的关键词,提高后续全文检索阶段文档匹配度。


在电商平台(淘宝、京东、Amazon等)上,检索建议补全可以帮助用户更准确、更迅速地定位到潜在购买商品。例如,用户输入空气,电商平台根据用户的历史行为(login user)或者平台总体推荐结果(non-login user),给出有关空气的一系列检索关键词(如空气质量、空气刘海、空气清新剂等),该检索关键词可以是简体、繁体、全拼、首字母拼音等形式。下面使用es的Completion Suggester来实现补全功能。


架构模块组织如下,

由三个模块,一个proxy,一条es总线组成。code将suggestion和normal隔离成2个index,不在normal mapping里加入suggestion,方便更好地管理和升级suggestion;也减轻normal es coordinator的压力。
对于每一个需要index的商品名称,使用ik挖出其简体token;使用pinyin挖出其ik后的token的全拼连接和首字母连接。然后插入到suggestion index。
case class SuggestJson(
item_id: Long,
item_name_suggester: Seq[String]
)
//SuggestJson(93,List(han, dou, yi, she, 2017, ban, 女装, nvzhuang, nz, 夏装, xiazhuang, xz, 新款, xinkuan, xk, 宽松, kuansong, ks, xian, shou, 短袖, duanxiu, dx, 两件套, liangjiantao, ljt, 连衣裙, lianyiqun, lyq, oy6198, lu, 浅蓝色, qianlanse, qls)),(这里需要将`韩都衣舍`这个token加入ik词表,防止被切开)
正常情况下分词的ik配置与suggestion配置要求一致,然后将其插入到normal index。
case class NormalJson(
item_id: Long,
item_name: String,
item_price: Double,
shop_name: String
)
//NormalJson(93,韩都衣舍2017韩版女装夏装新款宽松显瘦短袖两件套连衣裙OY6198陆 浅蓝色 M,116.0,韩都衣舍旗舰店)
下面描述一下用户检索历程,
还没有实现,但是可以使用Phrase Suggester和Term suggester来实现。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69946831/viewspace-3169850/ ,如需转载,请注明出处,否则将追究法律责任。