QueryTermMatchCount

简介

计算查询词中命中的词组个数。OpenSearch支持一个索引中包含多个字段,检索时只要查询词在其中一个字段上命中文档就可以返回。因此QueryTermMatchCount有两种计算方式,一种是查询词中在被检索索引包含的所有字段上命中的词组个数,一种是查询词中在被检索索引包含的某一个字段上命中的词组个数。比如default索引包含title和body两个字段,查询词为default:’使用手册’,我们可以计算查询词中在default索引下所有字段上(title和body)命中的词组个数,也可以计算查询词只在title或者body上命中的词组个数。

函数列表

函数原型

函数简介

QueryTermMatchCount create(OpsScorerInitParams params)

创建QueryTermMatchCount,计算查询词中在检索索引下所有字段上命中的词组个数

QueryTermMatchCount create(OpsScorerInitParams params, CString indexName)

创建QueryTermMatchCount,计算查询词中在检索索引下某一字段上命中的词组个数

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

创建QueryTermMatchCount,计算查询词中在指定索引下某一字段上命中的词组个数

void setGroupScoreMergeOp(CString opName)

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

double evaluate(OpsScoreParams params)

计算查询词中命中的词组与总词组的比值

函数详情

QueryTermMatchCount create(OpsScorerInitParams params)

创建QueryTermMatchCount对象,计算查询词在所有检索索引下命中的词组个数。

QueryTermMatchCount create(OpsScorerInitParams params, CString indexName)

创建QueryTermMatchCount对象,计算查询词中在指定检索索引下命中的词组个数。参数列表:indexName — 索引名称,必须为常量。

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

创建QueryTermMatchCount对象,计算查询词在指定索引下某一字段上命中的词组个数。参数列表:indexName — 索引名称,必须为常量。fieldName — 字段名称,该字段需要为TEXT或者SHORT_TEXT,并且分词类型为中文基础分词、自定义分词、单字分词、英文分词、模糊分词必须是常量。

void setGroupScoreMergeOp(CString opName)

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

参数列表:opName — 多个查询分组分数组合规则,目前支持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.querymatch.QueryTermMatchCount;

class BasicSimilarityScorer {
    QueryTermMatchCount _f1;
    boolean init(OpsScorerInitParams params) {
        _f1 = QueryTermMatchCount.create(params, "pack_index2", "text_field1");
        return true;
    }

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