config clause

config部分可以利用start_offset参数,用户可以指定从第几个结果文档开始返回文档集。例如,用户已经浏览过包含关键词“手机”的结果文档集中的前20个文档,现在想继续浏览20个以后的文档,则可以指定start_offset为20,以便于从第21个开始取文档。参数hit_number则控制向用户返回的文档数量,例如前端一页最多展示40个结果,则可指定hit_number为40以控制返回的文档数量小于等于40。问天也提供强大的调试功能,用户可给定不同的log_level值,获取查询过程及算分过程中的不同级别的日志信息。同时,用户可以选择不同的qrs_chain_name和summary_profile_name来控制查询语句和最终结果,并通过extra_kvpairs传递信息给各个插件。其详细语法如下:

  • 语法

'config='config_clause

其中,

config_clause := config_descriptioncon [{',' config_descriptioncon}]

其中config_descriptioncon为下列表中的值,各参数含义及其取值如下表所示:

参数名

取值范围

默认值

参数说明

start

NUMBER

0

从结果集中第start_offset开始返回document

hit

NUMBER

10

返回文档的最大数量

format

'xml' or 'protobuf' or 'fb_summary'

'xml'

输出格式控制,注意:'flatbuffers'只支持独立二阶段查询

proto_format_option

summary_in_bytes or pb_matchdoc_format

0

当format配置为protobuf时,控制其format的细节,目前只支持summary_in_bytes。 一阶段查询推荐走pb_matchdoc_format。

trace

'FATAL' or 'ERROR' or 'INFO' or 'DEBUG' or 'WARN' or 'TRACE1' or 'TRACE2' or 'TRACE3'

在前端输出查询过程中的相关信息

rank_trace

'FATAL' or 'ERROR' or 'INFO' or 'DEBUG' or 'WARN' or 'TRACE1' or 'TRACE2' or 'TRACE3'

在前端输出一个document的算分相关信息

kvpairs

WORDS '#' WORDS

key-value对,多个用‘;’隔开,例如:WORDS '#' WORDS;WORDS '#' WORDS;WORDS '#' WORDS

qrs_chain

IDENTIFIER

'DEFAULT'

配置的qrs处理链的名字

summary_profile

IDENTIFIER

'DefaultProfile'

配置中摘要的名字

analyzer

IDENTIFIER

为qrs指定另外的分词器,如不指定,则按照建索引时候schema.json里配置的analyzer进行分词处理。指定的值必须在analyzer.json里有配置。

default_index

string

""

指定在该次查询中使用的默认index,功能与cluster配置文件中query_config配置项的功能一致。如果在query中指定则优先使用query中指定的index作为默认index,否则使用query_config配置项中指定的index。

default_operator

'AND' or 'OR'

""

指定在该次查询中使用的默认query 操作符,功能与cluster配置文件中query_config配置项的功能一致。如果在query中指定则使用query中指定的作为默认操作符,否则使用query_config配置项中指定的操作符。

timeout

NUMBER

0

指定query超时时间,单位ms,0用配置超时,不能为负数。(备注:当query请求通过arpc方式传递时,rpc的pb里有timeout可选项,配置后query的实际超时时间由pb的timeout和query查询串里的timeout的较小值决定)

seek_timeout

NUMBER

0

指定query seek阶段超时时间,单位ms,默认值为0。默认情况下采用配置超时 * 0.7作为seek超时时间。

no_summary

no or yes

no

yes则只进行第一阶段查询,不取summary

dedup

no or yes

yes

yes则会自动对结果按照primary key去重,否则不会去重。

result_compress

'no_compress' or 'z_default_compress' or 'z_speed_compress' or 'snappy' or 'lz4'

选择对Qrs上返回结果的压缩类型,no_compress表示不压缩,z_default_compress表示zlib的Z_DEFAULT_COMPRESSION默认压缩,z_speed_compress表示zlib的Z_BEST_SPEED压缩,这里指定的压缩类型将会覆盖qrs.json中配置的压缩类型

searcher_return_hits

NUMBER

0

限制searcher返回结果数,如果为0,则返回start+hit;不能超过5000

actual_hits_limit

NUMBER

0

决定totalhits展示实际值还是估算值,当实际结果数小于actual_hits_limit,则返回实际值,否则返回估算值。如果为0,则始终返回估算值;如果为numeric_limits<uint32_t>::max(),则始终返回实际值。

sourceid

string

索引有多个replica同时在线服务,如果不给定sourceid,每次查询将会随机地选一个replica进行查询。索引进行增量更新时,多个replica之间会出现不一致的时期(部份已更新,部分还是旧的),会导致查询结果有时新有时旧。给定sourceid后,查询会根据sourceid的哈希值选取某个replica。同一sourceid的用户查询到的结果就不会新旧来回变换了。sourceid可以是任意字符串。

rerank_hint

BOOL

false

是否走第二轮算分

rank_size

NUMBER

0

粗排数,也就是直接动态索引截断数,如果为0, 则用配置文件里的值

rerank_size

NUMBER

0

第一轮精排数,如果为0, 则用配置文件里的值

total_rank_size

NUMBER

0

各partition粗排数之和,也就是直接动态索引截断数,如果为0, 则用配置文件里的值

total_rerank_size

NUMBER

0

各partition第一轮精排数之和,如果为0, 则用配置文件里的值

index_switch_limit

NUMBER

numeric_limits<uint32_t>::max()

设置主链上seek文档的个数,如果为numeric_limits<uint32_t>::max(), 则不会进行基于跳转辅链机制的动态截断

fetch_summary_type

docid or pk or rawpk

docid

设置取summary方式,默认是按照docid取,也可以通过pk的hash值或是pk的原文来取。

inner_result_compress(<3.4版本)

'no_compress' or 'z_default_compress' or 'z_speed_compress' or 'snappy'

设置引擎内部结果的压缩方式,主要用于searcher给proxy或qrs返回结果时。

batch_score

no or yes

yes

粗排批量算分开关,默认开启。引擎将累积到一定数量的文档后才对文档进行算分

optimize_rank

no or yes

yes

粗排延时算分开关,默认开启。如果粗排找到的文档数少于精排需要的文档,引擎将对粗排找到的文档进行延时算法

optimize_comparator

no or yes

yes

表达式延时算分开关,默认开启。如果表达式含多个维度,引擎对有些维度将延时算分

debug_query_key

string

""

引擎查询条件排错开关,key不为空时,走排错流程

no_tokenize_indexes

index_name1';'index_name2

""

支持查询中指定的index不分词(除分词以外的其他流程如归一化、去停用词会正常执行),多个index之间用';'分割

research_threshold

NUMBER

0

当结果数不足该值时,触发重查

fetch_summary_cluster

string

""

指定取summary的cluster(实现查询cluster与取summary的cluster不同)

fetch_summary_group

string

""

指定获取summary的分组,仅在配置summary索引分组的情况下使用

ignore_delete

bool

true

这个参数用于取summary的时候是否忽略访问deletemap。指定是否忽略deletionMap里面的删除标记,设置为true可以检索到被删除的文档

hit_summary_schema_cache_key

string

""

指定qrs上summary序列化字段集合的cachekey

metrics_src

string

""

指定查询的metrics统计的src,配合qrs.json中配置的src白名单一起使用

join_type

'default' or 'strong' or 'weak'

'default'

本次查询,辅表的join类型。default模式下,会按join_infos里配置的方式进行join过滤;strong模式下,会强制所有的辅表走join过滤,即只要有一个辅表关联失败,就会丢弃该doc;weak模式下,强制关闭join过滤

sub_doc

'no' or 'group' or 'flat'

'no'

本次查询是否开启 sub_doc 模式,详情请见 sub_doc 章。

  • 示例 config=cluster:daogou,start:0,hit:10,format:xml,rank_trace:DEBUG,trace:INFO,kvpairs:title#xyz;name#abc&&query=笔记本

该查询语句在daogou集群中查询“笔记本”,从第1个结果开始,取10个结果以xml的方式展现结果。查询过程中获取INFO级别的日志信息,获取排序过程中DEBUG级别的信息。所传递的key-value对为“title-xyz”和“name-abc”。