全部產品
Search
文件中心

OpenSearch:搜尋處理

更新時間:Jul 13, 2024

系統提供了豐富的搜尋文法以滿足使用者各種情境下的搜尋需求。

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:

    • 在搜尋請求中設定時候,user_id的值需要做urlencode。

    • 資料統計功能在統計UV資訊時依賴該參數做統計。

    • 如果有對接資料擷取,盡量讓上報行為資料時候的user_id和查詢請求中的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子句formatxml或者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": ""
}