系統提供了豐富的搜尋文法以滿足使用者各種情境下的搜尋需求。
URL
/v3/openapi/apps/$app_name/search?fetch_fields=name&query=config=format:fulljson&&query=name:'zhangsan'&&sort=id
$app_name:表示應用程式名稱(進階版/標準版是多應用版本類型,需要指定應用程式名稱訪問,主要針對服務中的應用版本,如填寫線下應用ID可訪問線下應用搜尋服務)。
以上 URL 省略了請求Header參數及編碼等因素。
以上 URL 中省略了訪問應用的 host 地址。
以上URL 中拼接的所有查詢參數,請查看下方“查詢參數”的參數定義、使用方式及範例。
請求協議
HTTP
請求方式
GET
支援格式
JSON
查詢參數
查詢參數具體拼接規則,詳情請參見V3版API簽名機制文檔。
參數 | 類型 | 必需 | 取值範圍 | 預設值 | 描述 |
query | string | 是 | 搜尋主體,不可為空。主要支援子句有 config子句、query子句、sort子句、filter子句、aggregate子句、distinct子句、kvpairs子句。 | ||
fetch_fields | string | 否 | 全部可展示欄位。 | 表示本次查詢需要召回哪些欄位值,多個欄位之間通過英文分號 | |
qp | string | 否 | 已上線規則 | 指定要使用的查詢分析規則,多個規則使用英文逗號 | |
disable | string | 否 | 關閉指定已生效的參數功能。 | ||
first_rank_name | string | 否 | 系統中預設基礎排序運算式名字 | 設定基礎排序運算式名字,最多僅支援1個基礎排序名稱。 | |
second_rank_name | string | 否 | 系統中預設業務排序運算式名字 | 設定業務排序運算式名稱,最多僅支援1個業務排序名稱。 | |
user_id | string | 否 | 用來標識發起當前搜尋請求的終端使用者。該值可以設定為下列值,優先順序從高到低:1. 終端使用者的長登入會員ID². 終端使用者的行動裝置imei標識 | ||
abtest | string | 否 | 使用A/B Test功能時需要設定該參數。 | ||
raw_query | string | 否 | 用於類目預測等演算法訓練使用,因此,建議所有查詢都設定該參數; | ||
search_strategy | string | 否 | 用於多路搜尋時配置查詢策略名稱稱 | ||
re_search | string | 否 | 用來設定重查策略,當前只支援按照total hits的閾值來設定。 | ||
biz | string | 否 | 用來描述本次請求的相關商務資訊 。比如本次請求來源的業務類型。 | ||
summary | string | 否 | 擷取系統結果摘要配置 | 搜尋結果摘要配置,可以指定某些欄位進行飄紅、截斷等操作。 | |
from_request_id | string | 否 | 本搜尋請求從哪裡引導而來,如果當前的query來自下拉提示、熱詞、底紋等功能的推薦列表,那麼請求這個推薦列表的request_id可以賦給這個參數,通過關聯這個引導事件,可以計算上遊功能的各項指標,衡量使用效果,為最佳化功能提供依據。詳見下拉提示產品文檔。 | ||
query子句 | string | 是 | 用於設定搜尋條件 | ||
config子句 | string | 否 | 用於設定搜尋召回資料格式,及召迴文檔數 | ||
filter子句 | string | 否 | 用於設定過濾條件 | ||
sort 子句 | string | 否 | 用於設定文檔排序條件(僅支援單欄位int類型,僅限v3版API及SDK) |
查詢參數用法
query:可以通過若干子句的組合來實現多樣的搜尋需求,query參數中各子句之間通過
&&
進行串連。fetch_fields:返迴文本資料大小對查詢效能影響較大,建議只擷取需要的欄位。如果SDK/API中有配置該參數會覆蓋控制台中對應功能配置。
qp:如果SDK/API中有配置該參數會覆蓋控制台中對應功能配置。
注意事項:qp的生效過程以及結果可以在控制台搜尋測試頁面查看,API/SDK暫不支援透出。
disable:目前支援禁用qp、summary、first_rank、second_rank、re_search等參數功能。
功能說明
控制查詢過程中關閉某些功能
目前支援禁用查詢分析、飄紅、粗精排, 重查等參數功能
參數格式:
disable=function[;function] function=function_name[:function_param]
例如:
關閉查詢分析, disable=qp
關閉查詢分析中的spell_check功能,disable=qp:spell_check,格式:disable=qp:$qp_processor_name,參考:QueryProcessor
關閉重查, disable=re_search
first_rank_name:如果SDK/API中有配置該參數會覆蓋控制台中對應功能配置。
second_rank_name:如果SDK/API中有配置該參數會覆蓋控制台中對應功能配置。
user_id:
abtest參數格式:
abtest=urlencode(scene_tag:urlencode(\$scene),flow_divider:urlencode(\$value))
,其中urlencode為URL編碼函數。flow_divider推薦為終端使用者的ID,如果沒有的話可以用終端使用者的裝置ID或者IP地址,該參數必須指定。
scene_tag:情境標識,如果使用者在控制台上沒有設定表示對所有情境下的流量都會做實驗,查詢中就不用設定scene_tag。
raw_query:
功能說明
用於類目預測查詢;只有查詢詞和raw_query的內容一致時,查詢時,才會去查查詢分析中配置的類目預測;
用於類目預測等演算法訓練使用,因此,建議所有查詢都設定該參數;
一般建議設定為終端使用者輸入的原始查詢詞。
參數格式:
raw_query=content
content: 原始查詢詞
re_search:
功能說明
用來設定重查策略,當前只支援按照total hits的閾值來設定。
需配置查詢分析功能。
若query中的查詢詞分詞後的term實體識別權重都一樣,則不會觸發重查,需幹預實體識別類別權重。
參數格式:
re_search=strategy:threshold,params:total_hits#${COUNT}
COUNT: 觸發重查時的total_hits上限。即當total hits少於COUNT時,會進行重查
範例:
re_search=url_encode(strategy:threshold,params:total_hits#6)
biz:
功能說明
用來描述本次請求的相關商務資訊。比如本次請求來源的業務類型。
參數格式:
biz=type:$TYPE
type: 使用者用來設定流量的類型,取值使用者自己確定,後續可以在報表中區分不同的來源統計
範例:
biz=type:home_page
vector_threshold:
功能說明
控制向量召迴文檔的向量分數閾值,表示只召迴向量分小於該值的文檔。
參數格式:
vector_threshold=14.0
取實值型別為浮點型;
選擇性參數,如沒有設定,系統會使用內建的閾值。
summary:
summary_element_prefix 與 summary_element_postfix 必須同時設定。
summary_element 與 (summary_element_prefix、summary_element_postfix)是相互影響的,出現在後面的配置會覆蓋前面。
目前不支援摘要和飄紅單獨設定。
如果SDK/API中有配置該參數會覆蓋控制台中對應功能配置。
參數 | 類型 | 必需 | 取值範圍 | 預設值 | 描述 |
summary_field | string | 是 | 要做摘要的欄位 | ||
summary_element | string | 否 | em | 飄紅標籤,html標籤去掉左右角括弧 | |
summary_ellipsis | string | 否 | … | 摘要的結尾省略符 | |
summary_snipped | int | 否 | 1 | 選取的摘要片段個數 | |
summary_len | string | 否 | 摘要要展示的片段長度 | ||
summary_element_prefix | string | 否 | 飄紅的首碼,必須是完整的html標籤,如<em> | ||
summary_element_postfix | string | 否 | 飄紅的尾碼,必須是完整的html標籤,如</em> |
返回結果
參數 | 類型 | 描述 |
status | string | 執行結果,OK為成功,FAIL為失敗,請根據返回錯誤碼進行排查 |
request_id | string | 該條查詢的記錄ID,主要用於排查問題使用 |
result | JSON | 實際返回結果,包括查詢耗時searchtime、引擎總結果數total、本次請求返回結果數num、本次查詢最大返回結果數viewtotal、查詢結果items、統計結果facet等資訊 |
errors | list | 錯誤碼和錯誤內容,message代表錯誤資訊;code 對應含義參考 錯誤碼文檔 |
searchtime:指引擎耗時,單位為秒。
total、viewtotal、num區別:total為一次查詢(不考慮config子句)引擎中合格結果數(在結果數較多情況下,該值會做最佳化),但考慮到效能及相關性,引擎最多會返回viewtotal個結果。如果需要翻頁的話,要求
start+hit必須要
小於viewtotal,total一般用來做展示。num為本次查詢請求(受限於config子句的start及hit)實際返回的條目,不會超過hit值。compute_cost:是一個只有一個map元素的數組,其中index_name表示應用ID,value表示本次查詢消耗的LCU。
items:包含查詢召回資料資訊,其中fields為搜尋召回內容。
variableValue:表示自訂參數返回結果,如擷取distance距離值,variableValue 節點只有在config子句的format為
xml
或者fulljson
時才能展現出來,json
格式預設不展示。sortExprValues: 表示對應文檔排序分。
facet:用於存放Aggregate子句返回的資訊。
array欄位類型:通過JSON和fulljson格式返回,資料之間通過\t分割,如果通過xml格式返回,通過空格分割
Search樣本
返回結果JSON
{
"result": {
"searchtime": 0.009554,
"total": 1,
"compute_cost": [
{
"index_name": "110247758",
"value": 0.304
}
],
"num": 1,
"viewtotal": 1,
"items": [
{
"variableValue": {
},
"sortExprValues": [
"10000"
],
"property": {
},
"attribute": {
},
"fields": {
"size": "XL",
"discount_price": "9.9",
"pid": "950",
"range_age": "18\t25",
"detail": "男士夾克翻領2021春秋新款青年薄款上衣休閑拉鏈外套",
"index_name": "110247758"
}
}
],
"facet": []
},
"ops_request_misc": "%7B%22request%5Fid%22%3A%22162642700916781929257960%22%2C%22scm%22%3A%2220140713.110229359..%22%7D",
"tracer": "",
"request_id": "162642700916781929257960",
"errors": [],
"status": "OK"
}
錯誤返回
{
"result": {
"searchtime": 0.003999,
"total": 0,
"compute_cost": [
{
"index_name": "110247758",
"value": 0.232
}
],
"num": 0,
"viewtotal": 0,
"items": [],
"facet": []
},
"ops_request_misc": "%7B%22request%5Fid%22%3A%22162642716516781913069826%22%2C%22scm%22%3A%2220140713.110229359..%22%7D",
"tracer": "",
"request_id": "162642716516781913069826",
"errors": [
{
"code": 6127,
"message": "Attribute not exist."
}
],
"status": "FAIL"
}
說明:status為FAIL表示既有error又無結果返回;但可能會出現既有error,又會有結果返回,此時status就為OK. 如出現1000 server error(搜尋逾時);或者2112(未指定精排中設定的索引)等報錯時,仍可能有結果返回。
Scroll 掃描
傳統搜尋情境的主要目的是為了盡量短的時間內召回最符合的結果,所以對搜尋結果進行了限制,例如 search方法最多隻能召回5000條文檔。在某些情境下需要提供更多的結果來進行分析工作,可以使用scroll介面來擷取更多的結果。
支援子句
query子句。
config子句(start參數無效)。
filter子句。
sort子句(只支援單欄位INT類型,僅限v3版API及SDK)。
URL
首次查詢
/v3/openapi/apps/$app_name/search?search_type=scan&scroll=1m&查詢參數
後續查詢
/v3/openapi/apps/$app_name/search?scroll_id=$scroll_id&scroll=1m&查詢參數
$app_name:表示應用程式名稱。
以上 URL 中省略了訪問應用的 host 地址。
以上2次 scroll請求 URL 省略了請求Header參數,查詢參數對應內容,及編碼等因素,完整scroll 請求 URL 參考下面樣本描述。
scroll 方法支援的功能較少,大部分功能都不支援,具體功能限制參考底部注意事項。
請求協議
HTTP
HTTP請求方式
GET
支援格式
JSON
查詢參數
參數 | 類型 | 必需 | 取值範圍 | 預設值 | 描述 |
scroll | STRING | 是 | 周,日,時,分,秒 | 表示下一次 scroll請求的有效期間,每次請求都必須設定該參數,可以用1m表示1min;支援的時間單位包括:w=Week, d=Day, h=Hour, m=minute, s=second | |
search_type | STRING | 是 | scan | 第一次查詢的時必須填寫,後續無需填寫,後續通過指定 scroll_id 實現下一次查詢 | |
scroll_id | string | 是 | 第一次調用scroll方法會返回scroll_id 但並不包含資料,後續每次搜尋都必須指定上一次返回scroll_id,並且後續搜尋結果中都會返回scroll_id及對應匹配的資料,後續查詢該參數必填 | ||
query子句 | string | 是 | 用於設定搜尋條件 | ||
config子句 | string | 是 | 用於設定搜尋召回資料格式,及召迴文檔數 | ||
filter子句 | string | 否 | 用於設定過濾條件 | ||
sort 子句 | string | 否 | 用於設定文檔排序條件(僅支援單欄位int類型,僅限v3版API及SDK) | ||
fetch_fields參數 | string | 否 | 用於設定召回哪些應用欄位內容 |
返回結果
參數 | 類型 | 描述 |
status | string | 執行結果,OK為成功,FAIL為失敗,請根據返回錯誤碼進行排查 |
request_id | string | 該條查詢的記錄ID,主要用於排查問題使用 |
result | string | 實際返回結果,包括查詢耗時searchtime、引擎總結果數total、本次請求返回結果數num、本次查詢最大返回結果數viewtotal、查詢結果items、統計結果 facet、scorllid 等資訊 |
errors | string | 錯誤內容,error_message代表錯誤資訊。error_code 對應含義參考 錯誤碼文檔 |
注意: scroll 返回結果格式,目前只支援返回為fulljson,JSON格式。
Scroll樣本
注意: config子句中start無效,通過hit值設定每次召迴文檔數。 aggregate、distinct、粗精排運算式等都無效,sort子句只支援單欄位INT類型排序。 不支援多應用scroll查詢。 如果傳入的scroll_id非法,查詢時會報錯。 召回結果格式只支援fulljson,JSON。 第一次查詢只返回scroll_id,不返迴文檔資料,需要重新查詢並設定上一次查詢返回的scroll_id才能召回資料。
第一次請求
注意: 此處省略了請求Header參數及編碼等因素。
http://$host/v3/openapi/apps/app_schema_demo/search?query=config=start:0,hit:1,format:fulljson,rerank_size:200&&query=name:'搜尋'&&sort=+id&&filter=id>0&search_type=scan&scroll=1m&fetch_fields=id;name;phone;int_arr;literal_arr;float_arr;cate_id
成功返回
{
"status": "OK",
"request_id": "150150574119953661605242",
"result": {
"searchtime": 0.005029,
"total": 1,
"num": 0,
"viewtotal": 1,
"scroll_id": "eJxtUMtuhDAM/BrvOYQC5cABdulvRFFIirsm2TpBavv1Ndut1EMlS36NZ0Y2ZHMxbueceAjIuWCMnrPjRITLyfzZm83y9V QVGT8x80U3PxQNUqieVZV1/an4ItbTUBPSx5wgXqKdvOSbmuKR8ZYjGWWirB4tvToAiX7u3G2eCNK77vnz8GlGPAV6suKBeqxAn0OiTd7NGEnesspyoyFLF6hecn4JUKjVgp0K3FnkfMfIyPoDuYWegX9GeYOpicY9TG8gwOSuBL04X1 MMg3ROwCesLlG6X7a2o=",
"items": [],
"facet": []
},
"errors": [],
"tracer": ""
}
後續請求
注意: 此處省略了請求Header參數及編碼等因素。
http://$host/v3/openapi/apps/app_schema_demo/search?fetch_fields=id;name;phone;int_arr;literal_arr;float_arr;cate_id&query=config=start:0,hit:1,format:fulljson,rerank_size:200&&query=name:'搜尋'&&sort=+id&&filter=id>0&scroll=1m&scroll_id=eJxtUMtuhDAM/BrvOYQC5cABdulvRFFIirsm2TpBavv1Ndut1EMlS36NZ0Y2ZHMxbueceAjIuWCMnrPjRITLyfzZm83y9V+QVGT8x80U3PxQNUqieVZV1/an4ItbTUBPSx5wgXqKdvOSbmuKR8ZYjGWWirB4tvToAiX7u3G2eCNK77vnz8GlGPAV6suKBeqxAn0OiTd7NGEnesspyoyFLF6hecn4JUKjVgp0K3FnkfMfIyPoDuYWegX9GeYOpicY9TG8gwOSuBL04X1+MMg3ROwCesLlG6X7a2o=
返回結果
{
"status": "OK",
"request_id": "150150574119952551519970",
"result": {
"searchtime": 0.006293,
"total": 1,
"num": 1,
"viewtotal": 1,
"scroll_id": "eJxNT9tugzAM/RrznIRC4YEHaNlvRFFIhteQtE6Qtn39TNdJk2z5dnx8rIPJRdudcqKhl60Uir2Vp06ISv8b6s3QbZCVzpaCdp93XXBzg2wEW9MJ2dWq8q7YVXt0YckDLlBP0WyOw31N8YgYizZEnAUsjkx4VT4k8zexpjiNS/XYHX0NNkWP71BfVyxQjxLUxSfazFH4PYSPnCL3iMniDZq3jN98aFRCgGrZniy8/itkBHWGuYVeQH+B+QzTCUZ1NJ9gj4FVMfrQPr8Y+Hk+dgU14fIDVhtfTw==",
"items": [
{
"fields": {
"cate_id": "0",
"float_arr": "0",
"id": "1",
"int_arr": "0",
"literal_arr": "搜尋",
"name": "搜尋",
"phone": "123****5678",
"index_name": "app_schema_demo"
},
"property": {},
"attribute": {},
"variableValue": {},
"sortExprValues": [
"1"
]
}
],
"facet": []
},
"errors": [],
"tracer": ""
}