全部產品
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:表示應用程式名稱(進階版/標準版是多應用版本類型,需要指定應用程式名稱訪問,主要針對服務中的應用版本)。

  • 以上 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子句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": ""
}