FieldTermMatchCount

简介

计算字段中与查询词匹配的分词词组个数。例子:假设字段title分词之后为:fieldmatchratio使用手册,查询词分词后为:OpenSearch使用手册。那么字段title中匹配到的分词词组个数为2。

函数列表

函数原型

函数简介

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

工厂函数,构造一个FieldTermMatchCount对象。

void setGroupScoreMergeOp(CString opName)

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

double evaluate(OpsScoreParams params)

计算字段中与查询词匹配的分词词组个数

函数详情

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

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

void setGroupScoreMergeOp(CString opName)

设置有多个query group时,多个group的分数如何计算。需要在init函数中调用。参数列表:opName — 算子名称,目前支持的算子名称:sum 和 max。sum:表示求和,max:表示求最大值。默认为sum。

double evaluate(OpsScoreParams params)

计算字段中与查询词匹配的分词词组个数。参数列表:params — 算分输入参数,详情请参考OpsScoreParams手册。返回值:返回字段中与查询词匹配的分词词组个数。代码示例:

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.FieldTermMatchCount;

class BasicSimilarityScorer {
    FieldTermMatchCount _fieldTermMatchCount;
    boolean init(OpsScorerInitParams params) {
        _fieldTermMatchCount = FieldTermMatchCount.create(params, "title_index", "title");
        _fieldTermMatchCount.setGroupScoreMergeOp("max");
        return true;
    }

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