解决方案
1、丰富扩展词库(解决医疗领域常规分词器分词不准问题)
- 抓取搜狗321个医学类细胞词库,加入ES词库
搜狗 .scel 词库的来源主要有两个方面:
-
-
- 搜狗输入法团队整理:搜狗输入法团队会通过多种途径收集、整理和更新词汇库,包括网络文本数据、用户反馈、专业术语、流行词汇等。他们会对这些信息进行筛选、分类和处理,形成搜狗输入法的默认词库。
-
-
-
-
用户贡献:搜狗输入法允许用户向其提交自定义词汇,用户可以通过反馈机制将新的词汇或词语建议提交给搜狗输入法团队。在经过审核和验证后,符合要求的词汇可能会被加入到搜狗输入法的默认词库中。
-
-
使用开源的 Java 库 sogou-dict-tools,将
搜狗医学分类下321个词库(.scel 格式)转换为文本格式(.txt),并加入ES扩展词库
在线转换地址:在线搜狗词库.scel格式转化为.txt文本格式 - 在线工具
- 开放扩展词维护功能菜单给业务使用(5个字以下的词,自动设置扩展词)
新增菜单“无结果搜索词列表页”,列表支持搜索词模糊分页搜索、增加扩展词(一天后生效)、增加同义词、每个无结果词汇 支持查看chatGpt推荐相关扩展词 支持查看chatGpt推荐相关同义词 支持查看商城相关商品列表 。
提交扩展词和同义词后,要由上级审核,可以查看自己的提交记录,可以查看提交排行榜,最好可以对每月提交排行榜前三 进行适当奖励。
2、搜索和排序算法 调整(解决匹配度过高,召回结果少和无结果问题)
- 关键词搜索匹配度99%或100%的前提下,目前综合排序顺序:
- 订货号干预 降序
- 三级分类干预 降序
- 类目预测分 降序
- 三级分类id 升序
- 是否热销 降序
- 是否新品 降序
- 相关性得分 降序
- 人气分 降序
问题点:
匹配度设置过高,召回结果精准度很高,但无结果的几率变大
- 调整措施:匹配度降到70%,排序顺序:
- 匹配度得分(99%匹配度得分为1 99%匹配度以下得分为0) 降序
- 订货号干预(设置干预的skuNo得分为干预值 否则为0) 降序
- 三级分类干预(sku所属三级分类设置了分类干预 得分为 干预值 否则为0) 降序
- 是否热销 (热销得分为1 否则为0)降序
- 是否新品 ( 新品得分为1 否则为0)降序
- 相关性得分 (由ES BM25公式自动计算得出) 降序
- 人气分(商品档位、等级等计算得出) 降序
- 类目预测分 (商品所属三级分类埋点的点击量)降序
- 三级分类id 升序
优点:
匹配度设置70%,在99%匹配度的商品浏览完后,才会出现99%匹配度以下的商品,精准度依旧,并减少了无结果页面的产生。
3、无结果页面 推荐搜索词(解决形容词修饰商品,因未维护形容词,导致无结果问题,引导用户先搜有结果的名词,再通过属性等筛选项筛选出想要的结果)
技术:HanLP支持多种领域的中文文本处理,包括分词、词性标注、关键词提取、
- 使用hanlp提取搜索词中包含的所有/n 名词,
- 再使用ES的术语聚合,在指定的字段上进行聚合操作,
- 执行该聚合查询后,Elasticsearch 将返回指定字段中匹配到的词及其对应的文档频次(即搜索结果数)。
- 通过查看聚合结果,可以知道哪些词有搜索结果,并且根据文档频次进行排序。
- 将有结果的名词,在页面显示 猜你想搜“XXXX”,“XXXX”,“XXXX”。
- 点击三个词中的任意一词跳转搜索结果页。
<!-- https://mvnrepository.com/artifact/com.hankcs/hanlp --> <dependency> <groupId>com.hankcs</groupId> <artifactId>hanlp</artifactId> <version>portable-1.8.4</version> </dependency>
4、商品维护 治疗的相关病症信息 加入搜索范围(解决用病症去搜相关商品的无结果问题)
开发相应功能 支持维护商品治疗的相关病症。