全部产品

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。
代码示例:

  1. package users.scorer;
  2. import com.aliyun.opensearch.cava.framework.OpsScoreParams;
  3. import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
  4. import com.aliyun.opensearch.cava.features.similarity.fieldmatch.KeyWordsMatched;
  5. class BasicSimilarityScorer {
  6. KeyWordsMatched _f1;
  7. boolean init(OpsScorerInitParams params) {
  8. _f1 = KeyWordsMatched.create(params, "pack_index1", "text_field");
  9. return true;
  10. }
  11. double score(OpsScoreParams params) {
  12. return _f1.evaluate(params);
  13. }
  14. };