简介
计算查询词中命中的词组个数。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);
}
};