系統提供了豐富的搜尋文法以滿足使用者各種情境下的搜尋需求。
URL
/v3/openapi/apps/$app_name/search?fetch_fields=name&query=config=format:fulljson&&query=name:'zhangsan'&&sort=id
$app_name:表示應用程式名稱(進階版/標準版是多應用版本類型,需要指定應用程式名稱訪問,主要針對服務中的應用版本)。
以上 URL 省略了請求Header參數及編碼等因素。
以上 URL 中省略了訪問應用的 host 地址。
以上URL 中拼接的所有查詢參數,請查看下方“查詢參數”的參數定義、使用方式及範例。
請求協議
HTTP
請求方式
GET
支援格式
JSON
查詢參數
查詢參數具體拼接規則,詳情請參見v3 API 簽名機制文檔。
參數 | 類型 | 必需 | 取值範圍 | 預設值 | 描述 |
query | string | 是 | 搜尋主體,不可為空。主要支援子句有 config子句、query子句、sort子句、filter子句、aggregate子句、distinct子句、kvpair子句。 | ||
fetch_fields | string | 否 | 全部可展示欄位。 | 表示本次查詢需要召回哪些欄位值,多個欄位之間通過英文分號 | |
disable | string | 否 | 關閉指定已生效的參數功能。 | ||
first_rank_name | string | 否 | 系統中預設基礎排序運算式名字 | 設定基礎排序函數名字,最多僅支援1個基礎排序名稱。 | |
second_rank_name | string | 否 | 系統中預設業務排序運算式名字 | 設定業務排序函數名字,最多僅支援1個業務排序名稱。 | |
user_id | string | 否 | 用來標識發起當前搜尋請求的終端使用者。該值可以設定為下列值,優先順序從高到低:1. 終端使用者的長登入會員ID². 終端使用者的行動裝置imei標識 | ||
re_search | string | 否 | 用來設定重查策略,當前只支援按照total hits的閾值來設定。 | ||
biz | string | 否 | 用來描述本次請求的相關商務資訊 。比如本次請求來源的業務類型。 | ||
summary | string | 否 | 擷取系統結果摘要配置 | 搜尋結果摘要配置,可以指定某些欄位進行飄紅、截斷等操作。 | |
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=re_search
first_rank_name:如果SDK/API中有配置該參數會覆蓋控制台中對應功能配置。
second_rank_name:如果SDK/API中有配置該參數會覆蓋控制台中對應功能配置。
user_id:
在搜尋請求中設定時候,user_id的值需要做urlencode。
raw_query:
功能說明
一般建議設定為終端使用者輸入的原始查詢詞。
參數格式:
raw_query=content
content: 原始查詢詞
re_search:
功能說明
用來設定重查策略,當前只支援按照total hits的閾值來設定。
參數格式:
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": ""
}