本文将为您详细介绍业务排序中所支持的相关函数。
功能概述
业务排序表达式主要针对基础排序后召回的结果进行进一步排序算分,最终将最优结果返回给用户。该表达式允许用户为应用自定义搜索结果的排序方式,通过在查询请求中指定相应的表达式来实现结果排序。排序表达式支持基本运算(包括算术运算、关系运算、逻辑运算、位运算和条件运算)、数学函数以及排序特征等功能。OpenSearch为几种经典应用(如论坛、资讯等)提供了相关性实战,用户可以根据自身数据的特点,选择合适的表达式模板,并在此基础上进行修改,以生成符合自己需求的表达式。
排序表达式中一律使用数值或数值字段类型参与基本运算操作,例如算术、关系,逻辑,条件等运算操作,大部分函数都不支持字符串类型进行运算。
文本相关性
text_relevance: 关键词在字段上的文本匹配度。
field_match_ratio: 获取某字段上与查询词匹配的分词词组个数与该字段总词组个数的比值。
query_match_ratio:获取查询词中(在某个字段上)命中词组个数与总词组个数的比值。
fieldterm_proximity: 用来表示关键词分词词组在字段上的紧密程度。
field_length:获取某个字段上的分词词组个数。
query_term_count: 返回查询词分词后词组个数。
query_term_match_count:获取查询词中(在某个字段上)命中文档的词组个数。
field_term_match_count:获取文档中某个字段与查询词匹配的词组个数。
query_min_slide_window:查询词在某个字段上命中的分词词组个数与该词组在字段上最小窗口的比值。
地理位置相关性
distance: 获取两个点之间的球面距离。一般用于LBS的距离计算。
gauss_decay,使用高斯函数,根据数值和给定的起始点之间的距离,计算其衰减程度。
linear_decay,使用线性函数,根据数值和给定的起始点之间的距离,计算其衰减程度。
exp_decay,使用指数函数,根据数值和给定的起始点之间的距离,计算其衰减程度。
时效性
timeliness: 时效分,用于衡量文档的新旧程度,单位为秒。
timeliness_ms: 时效分,用于衡量文档的新旧程度,单位为毫秒。
功能性
tag_match: 用于对查询语句和文档做标签匹配,使用匹配结果对文档进行算分加权。
first_phase_score: 获取粗排表达式最终计算分值。
kvpairs_value: 获取查询串中kvpairs子句中指定字段的值。
normalize:归一化函数,根据不同的算分将数值归一化至[0, 1]。
in和notin : 判断字段值是否(不)在指定列表中。