排序表达式(Ranking Formula)即业务排序,允许用户为应用自定义搜索结果排序方式,通过在查询请求中指定表达式来对结果排序。排序表达式支持基本运算(算术运算、关系运算、逻辑运算、位运算、条件运算)、数学函数和排序特征(feature)等。Open Search对于几种经典的应用(如论坛、资讯等)提供了表达式模板,用户可根据自己数据的特点,选择合适的表达式模板,并以此为基础进行修改,生成自己的表达式。
下文将介绍业务排序中支持的相关函数。
注意:排序表达式中一律使用 数值或数值字段类型 参与基本运算操作,例如算数,关系,逻辑,条件等运算操作,大部分函数都不支持字符串类型进行运算。
文本相关性
- 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的距离计算。
- in_polygon : 判断某个点是否在某个多边形范围内,一般用于配送范围判断
- in_query_polygon : 判断文档中指定的点是否在用户指定的多边形范围内
- gauss_decay,使用高斯函数,根据数值和给定的起始点之间的距离,计算其衰减程度
- linear_decay,使用线性函数,根据数值和给定的起始点之间的距离,计算其衰减程度
- exp_decay,使用指数函数,根据数值和给定的起始点之间的距离,计算其衰减程度
时效性
- timeliness : 时效分,用于衡量文档的新旧程度,单位为秒
- timeliness_ms : 时效分,用于衡量文档的新旧程度,单位为毫秒
功能性
- tag_match : 用于对查询语句和文档做标签匹配,使用匹配结果对文档进行算分加权
- first_phase_score : 获取粗排表达式最终计算分值
- kvpairs_value : 获取查询串中kvpairs子句中指定字段的值
- normalize :归一化函数,根据不同的算分将数值归一化至[0, 1]
- bit_struct: 将INT_ARRAY字段值进行自定义分组并允许对分组值进行指定operation计算
- fieldlen : 获取literal类型字段长度
- in/notin : 判断字段值是否(不)在指定列表中
- multi_attr : 返回数组字段指定位置的值
在文档使用中是否遇到以下问题
更多建议
匿名提交