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