简介

数据资产地图首页对于关键字结果的搜索是通过ES(Elasticsearch)搜索引擎聚合实现的,ES搜索是一种基于Lucene的分布式搜索引擎。它被设计为一个开放、可扩展、高效的全文搜索和分析引擎,能够快速地存储、搜索和分析大量数据。ES搜索具有实时性、可扩展性和容错性等优点,广泛应用于日志分析、电商搜索、数据可视化等领域。

ES基础评分

ES中使用的是Lucene搜索匹配文档,使用实用评分函数(Practical Scoring Function)的公式来计算相关度。这个公式借鉴了词频/逆向文档频率(term frequency/inverse document frequency)和向量空间模型(vector space model),同时也加入了一些现代的新特性,如协调因子(coordination factor),字段长度归一化(field length normalization),以及词或查询语句权重提升。

评分公式

ES搜索评分介绍 - 图1

计算方式

(1)coord(q,d) 协调因子,基于文档中出现的查询个数。coord(q,d) = overlap / maxoverlap,其中overlap是检索命中query中term的个数,maxoverlap是query中总共的term个数。

(2)tf(t_in_d) 指项t在文档d中出现的次数frequency。具体值为次数的开根号。

(3)idf(t) 反转文档频率, 出现项t的文档数频率。

(4)t.getBoost 查询时候查询项加权。

(5)norm(t,d) 长度相关的加权因子,对于field的标准化因子,在官方给的解释是field越短,如果召回的话权重越大。

(6),queryNorm(q)查询的标准查询,ES官方文档中在默认query boost为1的情况下,会计算每个指项t的反转文档频率,并通过term的q的权重,进行标准查询。

注:t是指在q当中切分出来的field匹配项

ES优化评分

新的ES评分优化规则依据当前数据资产地图子产品的业务需求,配合用户搜索偏好需求进行调整,在ES基础评分上,通过计算影响因子的影响权重,从而对ES最终评分产生影响。

ES搜索评分介绍 - 图2

影响因子

影响因子分为:元数据质量评分、热门读取以及热门搜索。 (1)元数据质量评分(Metadata Quality Score,MDQS)是根据逻辑表进行评分,根据用户是否进行相关配置产生作用,当用户开启相关配置,增加其相关影响。

(2)热门读取(Read Count,RC)是表的读取热度,根据读取的次数对最终评分进行影响。

(3)热门搜索(Search Heat,SH)是来自对某张表的搜索热度,根据搜索次数对评分对最终评分进行影响。

新评分公式

ES搜索评分介绍 - 图3

计算方式

ES的基础评分作为新评分方式的基础,通过查询符合条件的影响因子的最大最小值,在最大最小值上进行归一化处理,再乘新的权重,计算出对该ES基础评分的影响分数,再加上ES的影响分数,从而计算出最终影响分数。

权重的设置分为两个部分:

(1)开启的影响因子数量。

(2)影响因子设置在[0,100]中的占比。当影响因子权重全部为0时,计算结果就是ES 的基础评分方式。各个影响因子的权重则是根据值进行等比计算。

例如:当前三个影响因子全部开启,三个影响因子在数据资产地图中分别设置为10,10,10,则他们各自的权重为10/enabled 100,10/enabled 100,10/enabled * 100。该方式可以有效避免新增分数影响过大,高于ES基础评分。