2.2.2 功能实现
底纹词和热词的实现主要依赖于用户行为来为用户推荐热门词。在实现过程中,需要通过分析用户的行为历史,利用算法对用户历史行为分析和处理,从而实现 i2q 和 q2q 的召回。
通过分析用户搜索行为和历史数据等信息,底纹词和热词可以针对用户的兴趣和需求推荐最热门的关键词。例如,对于经常浏览 nike 相关商品的用户来说,系统可以向其推荐最近最热门的相关 nike 系列的底纹词和热词。
底纹词和热词的实现方案的关键在于该功能对于用户来说无主动触发条件,主要是服务内部对用户历史行为数据的细致分析和处理。通过对用户行为的深入挖掘,识别用户兴趣和需求的热门领域和方向,以便精确地推荐与用户需求相关的底纹词和热词。同时,为了更好地提高底纹词和热词的效果,还需要不断地优化算法,不断升级推荐策略,提高词的覆盖度和准确度,从而实现更加个性化和精准的推荐服务。
下拉词是指搜索框下方的词语提示,需要有用户的主动触发条件,用户在搜索框中输入关键字时,搜索引擎会根据用户实时输入内容进行关键字匹配召回,然后通过个性化排序进行推荐。与底纹词和热词不同,下拉词的推荐与当前用户的实际需求和搜索意图关系更加密切。
在下拉词的实现过程中,搜索引擎需要利用算法对用户的历史搜索记录和行为数据进行统计和分析,从而了解用户的兴趣爱好和搜索习惯,识别用户的搜索需求并提前预测可能的搜索意图。在召回阶段,搜索引擎在用户输入搜索词后,会根据匹配规则召回相关的关键词并进行排序,推荐与用户需求最相关的下拉词。在排序阶段,搜索引擎会根据个性化排序算法并结合用户行为特征和搜索历史数据,对召回的关键词进行权重排名,以便让用户看到最为相关和实用的下拉词提示。
综上所述,下拉词的实现方案需要根据用户的搜索历史数据和行为特征等信息,结合相关算法进行分析和处理,从而实现个性化和实用性的推荐服务。下拉词的推荐与用户的搜索需求和搜索意图关系更加密切,因此下拉词的质量和推荐准确度对用户的搜索体验和满意度有着重要影响。
基于现有服务,主要有以下问题
(1)研发&时间成本:对现有场景进行召回路的增删,策略的变更,资源位的投放等进行迭代,需要工程和算法投入较多的研发资源,而且迭代周期长,同时 PMO、各团队 leader 及 PM、项目联调、测试资源、线上变更 CR 等间接投入也会积少成多。
(2)多场景接入问题:不同场景重复建设也会带来成本的增加,同样需要研发和时间成本,不再赘述。
综上所述,目前服务存在迭代成本高、周期长、多场景接入重复建设等问题。为了优化现状,构建通用平台,避免重复开发和维护成本,提高运营效率和业务灵活性,从而支持公司的业务发展和用户需求。主要从以下几个点完善提高平台能力:
构建通用平台是优化现状的有效途径之一,但具体实施还需要深入考虑和细化。首先,需要在业务流程中明确各个场景的特点和需求,以及它们之间的异同点,并确定哪些部分可以抽象和共享,哪些部分是需要定制化的。其次,需要通过技术手段将通用组件进行抽象和分离,构建通用平台,同时加强平台的可定制性和扩展性,以满足不同场景的需求。这个过程需要,制定完善的流程,建设完善的监控和报警系统等,从而确保平台的可靠性和稳定性。最后,需要对平台进行持续的优化和完善,同时加强对平台的安全性、可维护性、扩展性等方面的管控,以保证平台能够适应不同场景的变化和需求。
通过深入调研,具体规划业务框架如下图
预处理主要做的功能有:
用户画像的调用(可选用功能):为后续模型排序,召回使用到的召回条件(例如用户点击行为 做 i2q 召回,搜索行为 q2q 召回等)
曝光过滤(可选用功能):这里的曝光过滤指假曝光,就是在后置处理返回的数据,用做召回时的过滤条件,排除掉已曝光的内容
获取 qp 分词(可选用功能):例如客服的召回时根据用户输入的词进行分词召回,这里就需要用 qp 对输入词进行分词
缓存数据(可选用功能):这个主要是用在词列表轮循场景用,主要用来记录上一次访问的 index 位置(这里会缓存用户画像相关的内容,如果用户画像不变的情况下,本次访问会看上一次的位置,用户画像一般变化就弃用 index,主要是用户画像变了后召回和排序都会变,列表就不是同一个)
条件处理(可选用功能):在封装召回 DSL 前,增加一些引擎查询条件,过滤条件,这些参数可以是上游传入,用户画像,ab 实验配置。
ab:获取 ab 分流
召回主要的就是封装召回 DSL,提供了不同字段索引查询(前缀、BM25、精准、数组等)和过滤(等于、不等于、大于、小于等)等功能,并支持单字段多条件拼装(且、或)和多字段拼接(且、或)等操作。这些操作在召回配置中进行配置,框架根据不同的需求配置,灵活地封装DSL来获取数据和处理流程。
目前召回支撑多种引擎:c引擎和es引擎。在对引擎进行召回时,提供了多种召回方式的选择,支持并行,串行或串加并的方式,根据不同的需求调整引擎的召回方式,以提高召回过程的性能和效率。
召回主要分为两种类型:混排词和资源位词,混排词的召回主要用在后续的排序以及最后的返回列表;资源位词的召回是用于资源投放,提供给运营做一些活动或产品的推广,数据放在排序好的混排词列表中。
默认的融合策略主要是根据优先级对多路召回结果进行融合。如果配置了兜底路,会先将非兜底路的结果进行融合,如果非兜底路没有数据,就将兜底路融合的数据列表,作为最终融合结果。如果非兜底路有数据,兜底路的结果就会被弃用。如果没有配置兜底路,则所有路的结果都将进行融合。在融合的过程中,还可以设置一些权重和相关参数,用于调整不同召回结果的比重和优先级。通过这样的方式,可以更好地满足不同场景和需求的要求。
目前召回结果的排序支持 sdk 模型、neuron 和 rs,这些模型可以对每个召回结果进行模型打分,从而得到 ctr、cvr 等指标。通过脚本可以将模型得到的指标进行加权融合,得到一个最终的综合得分 score。在融合过程中,可以使用不同的权重配置来对 ctr 和 cvr 进行数学计算,以达到最优的排序效果。
为了保证最终排序结果的相关性和质量,通常需要对得分进行过滤和限制,去除分数低于一定阈值的召回结果,以减少无关或者低相关的结果和垃圾结果的干扰。
接下来,会对经过融合和过滤的结果进行排序,可以根据不同的需求和场景,使用不同的算法进行排序。最终,得到一个相关性由高到低的列表,其中每个召回结果的相关性和排名都可以通过综合得分进行计算。最终,这个列表中的召回结果就是最终的排序结果,可以返回给用户进行展示。通过这样的方式,可以实现对召回结果的快速排序和过滤,提高结果的相关性和质量。
重排是一种对排序结果进行后处理的技术,主要目的是为了进一步提高排序结果的相关性和质量。重排的方式包括同义词打散和无价过滤等。
同义词打散是对搜索结果的优化,它的目的是通过去除召回结果列表中包含语义相同的结果,来保证搜索结果的多样性和覆盖面。这可以帮助我们提高搜索结果的质量和用户体验,避免结果重复和过度集中在某一特定领域。例如,当用户在搜索引擎中输入“巧克力”关键词时,通过同义词打散技术,搜索引擎可以展示多种与“巧克力”相关的结果,如“巧克力蛋糕”、“巧克力口味”等,以满足不同用户的需求。
无价过滤也是对搜索结果的优化,它的目的是通过去除召回结果列表中包含无价或无法售出的商品,来保证搜索结果的准确性和有效性。这可以帮助我们提高搜索结果的质量和用户体验,避免用户浪费时间浏览无效商品或服务。例如,在平台上进行商品搜索时,通过无价过滤技术,可以快速识别和去除“已售罄”、“暂无售价”等无效商品,保证用户获得有效的商品信息并提高搜索效率。
总之,重排可以对排序结果进行优化和后处理,使结果更加高效、准确和相关。通过适当的同义词打散和无价过滤等技术手段,可以进一步提升排序算法的效果和性能,提高平台的竞争力和用户体验。
资源位指在重排好的召回结果列表中,将资源位词按照一定的规则进行投放处理。
首先,为了保证资源位投放的效果,需要对资源位进行优先级排序,以保留高优先级的资源位,优先级高的资源位可以覆盖优先级低的资源位。例如,对于下拉词的第五坑位,品牌直跳的优先级最高,其次是内容导购、ip 直跳,优先级逐个降低。
然后,需要去除混排词中与资源位冲突的词,以避免资源位和响应的搜索结果重复。
最后,根据资源位类型,将资源位投放到混排词列表的前置、坑位或者后置位置,以提高资源位的曝光度和点击率。这样,可以有效地提高用户对搜索结果的关注度和点击率,提高搜索引擎的收益和用户体验。
高亮:为了突出下拉词中的关键词,让用户更容易找到所需信息,我们可以通过后置处理实现下拉词高亮功能,将下拉词中的关键字进行标注,从而使客户端易于识别。
统一埋点处理:为了更好监控结果,我们可以通过后置处理实现统一埋点处理功能,将搜索的实验、场景等信息记录下来,以便后续进行分析和运营优化。
监控功能:为了确保系统的顺畅运行,我们可以通过后置处理实现监控功能,对搜索结果实时监控,一旦发现异常情况及时报警并进行处理,保证服务的可靠性和稳定性。
返回结构封装:为了方便客户端处理返回结果,我们可以通过后置处理对搜索结果进行结构化封装,以满足不同场景的特定的需求。
通过这些定制化处理,可以满足客户特定的搜索需求,提高搜索服务的精准性、速度和用户体验。
由于词分发服务不同于其他服务,我们对外的方式有两种,一是直接对 app,通过 http + 域名 url 调用网关,然后网关转发到词分发集群,另一种是通过 dubbo rpc 调用。针对这两种方式,我们刚开始两种分案进行隔离:
方案1 | 方案2 | |
---|---|---|
方式 |
|
|
优点 | 应用的监控在一起,新加集群埋点不需要额外处理 |
|
缺点 |
| 不同应用的监控是分开的,新加应用,埋点需要额外增加采集 |
架构 |
集群管理 | 配置 | CICD |
单路配置 | 多路配置 |
“diff”即“Difference”的缩写,表示两个事物之间的差异或区别。在词分发平台中,“diff工具”指的是用于比较、分析两个不同搜索策略差异并生成报告的工具。这个工具的主要作用是在算法上新策略或新词库时,与旧的策略或词库相比较,查看效果差异并生成报告。
这个工具可以对两个不同版本的策略进行比较,找出它们之间的差异,比如不同的权重、不同的过滤和排序规则等等。通过diff工具,可以快速地获得不同策略的结果比对,帮助分析策略变化对搜索结果产生的影响,并找出问题所在,从而针对性地解决问题。
总之,diff工具在搜索引擎中扮演着非常重要的角色。它不仅有助于搜索系统的优化与升级、提高搜索服务的质量与效率,也为搜索引擎算法的开发和研究提供了便利。
*文/zhen.lee
关注得物技术,每周一、三、五更新技术干货
要是觉得文章对你有帮助的话,欢迎评论转发点赞~
未经得物技术许可严禁转载,否则依法追究法律责任。
“
扫码添加小助手微信
如有任何疑问,或想要了解更多技术资讯,请添加小助手微信: