简介
用于判断查询词的核心词与指定字段的匹配情况。该特征返回三档分数,所有查询词在字段上都没有出现返回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);
}
};