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”。