前情概要:
我们搭建了一个涵盖全国企业信息的企业库,涵盖4000w的工商注册企业以及8000w的个体工商信息。用户使用此库的主要场景是检索与用户业务相关的企业,以寻找销售机会。
问题来了
怎样帮用户更好地查找到心仪的企业?
首先,本着寻找销售机会的目标,分析用户检索的常见场景:
产品现状
对产品而言,特定企业查询,是企业库检索的面子工程,有心里预期的检索结果过差,会造成极差的第一印象;同类企业查询,是我们项目的目标,能够查找符合用户需求的一类企业,才能更好地为用户提供价值
惭愧而言,现状距离上述两种目标都相差甚远
优化方案
当前企业库支持公司名称、法人、地址和经营范围四个内容的检索,但是基于ES现有的评分结果,综合排序效果很差。结合用户使用场景,我们拟订以下优化方案:
1. 补充检索内容
巧妇难为无米炊,缺少数据的情况下查询效果一定差。补充企业产品、品牌词等内容,满足用户查找线索的常用场景。
2. 补充检索词库
ES检索提供通用词库,但是我们场景下需要识别的企业信息与通用词有一定差异,只有词库够强大,分词能力才能更强。
3. 调整检索评分
检索评分直接影响检索排序,而排序是给用户的第一观感。
在实操过程中,我们是3,1,2的顺序来进行的优化,以下也将按实操过程来给大家展示优化效果。
优化1:调整检索评分
在检索评分上,我们做了两方面的调整:
一方面,针对不同检索内容项,设置不同权重,将公司名称设置最高权重,法人其次,地址和经营范围权重最低。权重调整的效果如下:
调整前
调整后
检索词【开店】,调整前,所有检索内容权重相同,由于法人姓名长度较短,检索词若命中法人姓名,得分较高,因此大部分命中法人的信息会排在前面。在调整后,我们增加了公司名称的权重,减少了由于法人字段过短造成的高分影响,排在前位的较多是公司名称命中的数据。
上述检索虽调整了检索范围的权重,但是从检索效果来看并不理想。主要原因在于公司名称中个体工商一般名称较短,命中检索词的时候会获得更高的评分,导致排序靠前的数据大部分为个体工商户。
我们又做了第二步调整,增加「企业」类型的检索评分(_score*2),同时增加注册资本大于100w的公司得分(_score*2)。效果如下:
经过两轮调整,目前的检索效果基本符合预期。
优化2:补充检索内容
在销售机会查找的业务场景下,用户经常使用产品词、品牌词等进行搜索。为此,我们首先引入了商标数据,补充检索内容。
引入数据量400w+
引入前效果:
引入后:
优化3:补充检索词库
为了让ES更加准确的识别用户输入的信息,我们拟订从公司名称中拆解出一些分词,补充到检索词库中。
针对公司名称的拆词,使用现有策略模型,公司名称拆词的效果如下:
拟订将【K】【B】类输入到ES词库中。
效果,未完待续。。。。
其他优化尝试
(1) [endif]入库分词和检索词使用不同粒度:入库分词存储时,公司名称、法人、地址采用细粒度分词,主营业务采用粗粒度分词。检索时采用粗粒度分词。
避免拆词过细,减少了match的总条数
后续方向
(1) ES检索词库补充
(2) 增加更多检索内容,品牌、产品等