搜尋小工具可為網路應用程式提供自訂搜尋介面。 實作時只需要最少的 HTML 和 JavaScript,並支援常見功能,例如分頁和切面。您也可以使用 CSS 和 JavaScript 自訂介面。
如需更多彈性,請使用 Query API。請參閱「使用 Query API 建立搜尋介面」。
建立搜尋介面
如要建構搜尋介面,請按照下列步驟操作:
- 設定搜尋應用程式。
- 為應用程式產生用戶端 ID。
- 為搜尋框和搜尋結果新增 HTML 標記。
- 在頁面上載入小工具。
- 初始化小工具。
設定搜尋應用程式
每個搜尋介面都需要在管理控制台中定義的搜尋應用程式。應用程式會提供查詢設定,例如資料來源、多面向和搜尋品質參數。
如要建立搜尋應用程式,請參閱「建立自訂搜尋功能」。
產生應用程式的用戶端 ID
除了「設定 Cloud Search API 的存取權」中的步驟,您還需要為網路應用程式產生用戶端 ID。
設定專案時,請注意下列事項:
- 選取「網路瀏覽器」用戶端類型。
- 提供應用程式的原始 URI。
- 記下用戶端 ID。小工具不需要用戶端密鑰。
詳情請參閱「用戶端網頁應用程式的 OAuth 2.0」。
新增 HTML 標記
小工具需要下列 HTML 元素:
- 搜尋框的
input元素。 - 用於錨定建議對話方塊的元素。
- 搜尋結果的元素。
- (選用) 用於 facet 控制項的元素。
這個程式碼片段會顯示由 id 屬性識別的元素:
載入小工具
使用 <script> 標記加入載入器:
提供 onload 回呼。載入器準備就緒後,請呼叫 gapi.load(),載入 API 用戶端、Google 登入和 Cloud Search 模組。
初始化小工具
使用 gapi.client.init() 或 gapi.auth2.init() 初始化用戶端程式庫,並提供用戶端 ID 和 https://www.googleapis.com/auth/cloud_search.query 範圍。使用建構工具類別設定及繫結小工具。
初始化範例:
設定變數:
自訂登入體驗
使用者開始輸入內容時,小工具會提示登入。您可以透過網站專用的 Google 登入功能,享有個人化體驗。
直接授權使用者
使用「使用 Google 帳戶登入」功能監控及管理登入狀態。
本範例會在按鈕點擊時使用 GoogleAuth.signIn():
自動登入使用者
預先授權應用程式給貴機構使用者,簡化登入程序。這項功能也適用於 Cloud Identity Aware Proxy。請參閱「使用 Google 登入服務搭配 IT 應用程式」。
自訂介面
如要變更小工具的外觀,請按照下列步驟操作:
- 使用 CSS 覆寫樣式。
- 使用轉接程式裝飾元素。
- 使用介面卡建立自訂元素。
使用 CSS 覆寫樣式
這個小工具包含自己的 CSS。如要覆寫,請使用祖先選取器提高特異性:
#suggestions_anchor .cloudsearch_suggestion_container {
font-size: 14px;
}
請參閱「支援的 CSS 類別」參考資料。
使用轉接程式裝飾元素
建立並註冊轉接程式,在元素顯示前進行修改。這個範例會新增自訂 CSS 類別:
在初始化期間註冊轉接頭:
使用轉接程式建立自訂元素
實作 createSuggestionElement、createFacetResultElement 或 createSearchResultElement,建構自訂 UI 元件。本範例使用 HTML <template> 標記:
註冊轉接程式:
自訂分面元素必須遵循下列規則:
- 在可點擊元素中附加
cloudsearch_facet_bucket_clickable。 - 將每個 bucket 包裝在
cloudsearch_facet_bucket_container中。 - 維持回應中的 bucket 順序。
舉例來說,下列程式碼片段會使用連結而非核取方塊來顯示分面。
自訂搜尋行為
使用轉接程式攔截要求,藉此覆寫搜尋應用程式設定。
實作 interceptSearchRequest,在執行前修改要求。這個範例會將查詢限制在所選來源:
註冊轉接程式:
下列 HTML 用於顯示依來源篩選的選取方塊:
下列程式碼會監聽變更、設定選取項目,並視需要重新執行查詢。
您也可以在介面卡中實作 interceptSearchResponse,攔截搜尋回應。
釘選版本
- API 版本:在初始化前設定
cloudsearch.config/apiVersion。 - 小工具版本:使用
gapi.config.update('cloudsearch.config/clientVersion', 1.1)。
如果未設定,這兩項都會預設為 1.0。
舉例來說,如要將小工具固定在 1.1 版,請執行下列操作:
保護搜尋介面
遵循網頁應用程式安全防護最佳做法,尤其是防止點擊劫持。
啟用偵錯功能
使用 interceptSearchRequest 啟用偵錯功能:
if (!request.requestOptions) {
request.requestOptions = {};
}
request.requestOptions.debugOptions = {enableDebugging: true};
return request;