KeyWordsMatched

简介

用于判断查询词的核心词与指定字段的匹配情况。该特征返回三档分数,所有查询词在字段上都没有出现返回0分,查询词中的核心词在字段上面出现返回0.5,所有的查询词都在字段上出现返回1.0。假设原始查询为A AND B RANK C,如果A、B、C在字段上没有出现则返回0分;如果只有A、B在字段上出现则返回0.5;如果A、B、C都在字段上出现则返回1.0。关于核心词,如果使用了查询分析,算分时会根据查询分析产出的信息确定哪些词是核心词,否则会根据原始查询的组合逻辑进行判断。

函数列表

函数原型

函数简介

KeyWordsMatched create(OpsScorerInitParams params, CString indexName, CString fieldName)

工厂函数,创建FieldMatchWeighted对象

void setGroupScoreMergeOp(CString opName)

设置多个query group结果的merge方式,可以是sum和max,默认为sum

double evaluate(OpsScoreParams params)

计算查询词在指定字段上的匹配度

函数详情

KeyWordsMatched create(OpsScorerInitParams params, CString indexName, CString fieldName)

创建KeyWordsMatched对象,需要指定待匹配的索引名称和字段名称。参数列表:params — 初始化输入参数,详情请参考OpsScorerInitParams手册。indexName — 指定的索引名,必须为常量。fieldName — 索引下的字段名,该字段需要为TEXT或者SHORT_TEXT,并且分词类型为中文基础分词、自定义分词、单字分词、英文分词、模糊分词,必须是常量。

void setGroupScoreMergeOp(CString opName)

设置多个查询分组之间分数组合规则,目前仅支持max、sum,如果没有设置默认多个group分数进行sum。该函数必须在算分插件初始化阶段调用。查询分组是指经过查询分析处理之后对原始查询词进行的扩展,默认只有一个查询分组。参数列表:opName — 多个查询分组分数组合规则,目前支持max与sum。

double evaluate(OpsScoreParams params)

计算查询词中的核心词与字段的匹配情况。参数列表:params — 算分输入参数,详情请参考OpsScoreParams手册。返回值:核心词语字段的匹配程度,取值范围为0,0.5,1.0。代码示例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.features.similarity.fieldmatch.KeyWordsMatched;

class BasicSimilarityScorer {
    KeyWordsMatched _f1;
    boolean init(OpsScorerInitParams params) {
        _f1 = KeyWordsMatched.create(params, "pack_index1", "text_field");
        return true;
    }

    double score(OpsScoreParams params) {
        return _f1.evaluate(params);
    }
};