Tiện ích tìm kiếm cung cấp một giao diện tìm kiếm có thể tuỳ chỉnh cho các ứng dụng web. Tiện ích này chỉ yêu cầu một lượng nhỏ HTML và JavaScript để triển khai và bật các tính năng tìm kiếm phổ biến như phương diện và phân trang. Bạn cũng có thể tuỳ chỉnh một số phần của giao diện bằng CSS và JavaScript.
Nếu bạn cần linh hoạt hơn so với tiện ích cung cấp, hãy cân nhắc sử dụng Query API. Để biết thông tin về cách tạo giao diện tìm kiếm bằng Query API, hãy tham khảo bài viết Tạo giao diện tìm kiếm bằng Query API.
Xây dựng giao diện tìm kiếm
Bạn cần thực hiện một số bước để tạo giao diện tìm kiếm:
- Định cấu hình ứng dụng tìm kiếm
- Tạo mã ứng dụng cho ứng dụng
- Thêm mã đánh dấu HTML cho hộp tìm kiếm và kết quả
- Tải tiện ích trên trang
- Khởi chạy tiện ích
Định cấu hình ứng dụng tìm kiếm
Mỗi giao diện tìm kiếm phải có một ứng dụng tìm kiếm được xác định trong bảng điều khiển quản trị. Ứng dụng tìm kiếm cung cấp thêm thông tin cho truy vấn, chẳng hạn như nguồn dữ liệu, phương diện và chế độ cài đặt chất lượng tìm kiếm.
Để tạo ứng dụng tìm kiếm, hãy tham khảo phần Tạo trải nghiệm tìm kiếm tuỳ chỉnh.
Tạo mã ứng dụng cho ứng dụng
Ngoài các bước trong phần Định cấu hình quyền truy cập vào API Google Cloud Search, bạn cũng phải tạo mã ứng dụng khách cho ứng dụng web.
Khi bạn định cấu hình dự án:
- Chọn loại ứng dụng khách Trình duyệt web
- Cung cấp URI gốc của ứng dụng.
- Ghi lại mã ứng dụng đã tạo. Bạn sẽ cần mã ứng dụng để hoàn tất các bước tiếp theo. Tiện ích này không bắt buộc phải có khoá ứng dụng.
Để biết thêm thông tin, hãy xem bài viết OAuth 2.0 cho ứng dụng web phía máy khách.
Thêm mã đánh dấu HTML
Tiện ích này cần một lượng nhỏ HTML để hoạt động. Bạn phải cung cấp:
- Phần tử
input
cho hộp tìm kiếm. - Một phần tử để liên kết cửa sổ bật lên đề xuất.
- Một phần tử chứa kết quả tìm kiếm.
- (Không bắt buộc) Cung cấp một phần tử để chứa các thành phần điều khiển khía cạnh.
Đoạn mã HTML sau đây cho thấy HTML của tiện ích tìm kiếm, trong đó các phần tử cần liên kết được xác định bằng thuộc tính id
:
Tải tiện ích
Tiện ích được tải động qua tập lệnh trình tải. Để đưa trình tải vào, hãy sử dụng thẻ <script>
như sau:
Bạn phải cung cấp lệnh gọi lại onload
trong thẻ tập lệnh. Hàm này được gọi khi trình tải sẵn sàng. Khi trình tải sẵn sàng, hãy tiếp tục tải tiện ích bằng cách gọi gapi.load()
để tải ứng dụng API, Đăng nhập bằng Google và các mô-đun Tìm kiếm trên đám mây.
Hàm initializeApp()
được gọi sau khi tất cả các mô-đun được tải.
Khởi chạy tiện ích
Trước tiên, hãy khởi chạy thư viện ứng dụng bằng cách gọi gapi.client.init()
hoặc gapi.auth2.init()
bằng mã ứng dụng đã tạo và phạm vi https://www.googleapis.com/auth/cloud_search.query
. Tiếp theo, hãy sử dụng các lớp gapi.cloudsearch.widget.resultscontainer.Builder
và gapi.cloudsearch.widget.searchbox.Builder
để định cấu hình tiện ích và liên kết tiện ích đó với các phần tử HTML.
Ví dụ sau đây cho thấy cách khởi chạy tiện ích:
Ví dụ trên tham chiếu đến hai biến cấu hình được xác định là:
Tuỳ chỉnh trải nghiệm đăng nhập
Theo mặc định, tiện ích này sẽ nhắc người dùng đăng nhập và cho phép ứng dụng vào thời điểm họ bắt đầu nhập truy vấn. Bạn có thể sử dụng tính năng Đăng nhập bằng Google cho trang web để mang đến trải nghiệm đăng nhập phù hợp hơn cho người dùng.
Uỷ quyền trực tiếp cho người dùng
Sử dụng tính năng Đăng nhập bằng Google để theo dõi trạng thái đăng nhập của người dùng và đăng nhập hoặc đăng xuất người dùng nếu cần. Ví dụ: ví dụ sau đây quan sát trạng thái isSignedIn
để theo dõi các thay đổi về trạng thái đăng nhập và sử dụng phương thức GoogleAuth.signIn()
để bắt đầu đăng nhập từ một lượt nhấp vào nút:
Để biết thêm thông tin chi tiết, hãy xem bài viết Đăng nhập bằng Google.
Tự động đăng nhập người dùng
Bạn có thể đơn giản hoá thêm trải nghiệm đăng nhập bằng cách uỷ quyền trước cho ứng dụng thay mặt cho người dùng trong tổ chức của bạn. Kỹ thuật này cũng hữu ích nếu bạn sử dụng Cloud Identity-Aware Proxy để bảo vệ ứng dụng.
Để biết thêm thông tin, hãy xem bài viết Sử dụng tính năng Đăng nhập bằng Google với các ứng dụng CNTT.
Tuỳ chỉnh giao diện
Bạn có thể thay đổi giao diện của giao diện tìm kiếm thông qua việc kết hợp các kỹ thuật:
- Ghi đè kiểu bằng CSS
- Trang trí các phần tử bằng bộ chuyển đổi
- Tạo thành phần tuỳ chỉnh bằng bộ chuyển đổi
Ghi đè kiểu bằng CSS
Tiện ích tìm kiếm đi kèm với CSS riêng để tạo kiểu cho các phần tử đề xuất và kết quả cũng như các chế độ điều khiển phân trang. Bạn có thể định kiểu lại các phần tử này nếu cần.
Trong quá trình tải, tiện ích tìm kiếm sẽ tự động tải tệp kiểu mặc định. Điều này xảy ra sau khi tải các tệp định kiểu ứng dụng, làm tăng mức độ ưu tiên của các quy tắc. Để đảm bảo kiểu của riêng bạn được ưu tiên hơn kiểu mặc định, hãy sử dụng bộ chọn thành phần cấp trên để tăng độ cụ thể của các quy tắc mặc định.
Ví dụ: quy tắc sau đây không có hiệu lực nếu được tải trong thẻ link
hoặc style
tĩnh trong tài liệu.
.cloudsearch_suggestion_container {
font-size: 14px;
}
Thay vào đó, hãy xác định quy tắc bằng mã nhận dạng hoặc lớp của vùng chứa cấp trên được khai báo trong trang.
#suggestions_anchor .cloudsearch_suggestion_container {
font-size: 14px;
}
Để biết danh sách các lớp hỗ trợ và ví dụ về HTML do tiện ích tạo, hãy xem tài liệu tham khảo Các lớp CSS được hỗ trợ.
Trang trí các phần tử bằng bộ chuyển đổi
Để trang trí một phần tử trước khi kết xuất, hãy tạo và đăng ký một bộ chuyển đổi triển khai một trong các phương thức trang trí như decorateSuggestionElement
hoặc decorateSearchResultElement.
Ví dụ: các trình chuyển đổi sau đây sẽ thêm một lớp tuỳ chỉnh vào phần tử đề xuất và kết quả.
Để đăng ký bộ chuyển đổi khi khởi chạy tiện ích, hãy sử dụng phương thức setAdapter()
của lớp Builder
tương ứng:
Các trình trang trí có thể sửa đổi các thuộc tính của phần tử vùng chứa cũng như mọi phần tử con. Bạn có thể thêm hoặc xoá các phần tử con trong quá trình trang trí. Tuy nhiên, nếu thực hiện thay đổi cấu trúc cho các phần tử, hãy cân nhắc việc tạo trực tiếp các phần tử thay vì trang trí.
Tạo thành phần tuỳ chỉnh bằng bộ chuyển đổi
Để tạo một phần tử tuỳ chỉnh cho nội dung đề xuất, vùng chứa phương diện hoặc kết quả tìm kiếm, hãy tạo và đăng ký một trình chuyển đổi triển khai createSuggestionElement
, createFacetResultElement
hoặc createSearchResultElement
tương ứng.
Các trình chuyển đổi sau đây minh hoạ cách tạo các phần tử đề xuất và kết quả tìm kiếm tuỳ chỉnh bằng cách sử dụng thẻ <template>
HTML.
Để đăng ký bộ chuyển đổi khi khởi chạy tiện ích, hãy sử dụng phương thức setAdapter()
của lớp Builder
tương ứng:
Việc tạo phần tử khía cạnh tuỳ chỉnh bằng createFacetResultElement
phải tuân theo một số quy định hạn chế:
- Bạn phải đính kèm lớp CSS
cloudsearch_facet_bucket_clickable
vào phần tử mà người dùng nhấp vào để bật/tắt một bộ chứa. - Bạn phải gói từng bộ chứa trong một phần tử chứa có lớp CSS
cloudsearch_facet_bucket_container
. - Bạn không thể hiển thị các bộ chứa theo thứ tự khác với thứ tự xuất hiện trong phản hồi.
Ví dụ: đoạn mã sau đây hiển thị các phương diện bằng cách sử dụng đường liên kết thay vì hộp đánh dấu.
Tuỳ chỉnh hành vi tìm kiếm
Chế độ cài đặt Ứng dụng tìm kiếm thể hiện cấu hình mặc định cho giao diện tìm kiếm và ở trạng thái tĩnh. Để triển khai các bộ lọc hoặc phương diện động, chẳng hạn như cho phép người dùng bật/tắt các nguồn dữ liệu, bạn có thể ghi đè chế độ cài đặt ứng dụng tìm kiếm bằng cách chặn yêu cầu tìm kiếm bằng một bộ chuyển đổi.
Triển khai một bộ chuyển đổi bằng phương thức interceptSearchRequest
để sửa đổi các yêu cầu được gửi đến API tìm kiếm trước khi thực thi.
Ví dụ: bộ chuyển đổi sau đây sẽ chặn các yêu cầu để hạn chế truy vấn đến một nguồn do người dùng chọn:
Để đăng ký bộ chuyển đổi khi khởi chạy tiện ích, hãy sử dụng phương thức setAdapter()
khi tạo ResultsContainer
HTML sau đây được dùng để hiển thị hộp chọn lọc theo nguồn:
Mã sau đây sẽ theo dõi thay đổi, thiết lập lựa chọn và thực thi lại truy vấn nếu cần.
Bạn cũng có thể chặn phản hồi tìm kiếm bằng cách triển khai interceptSearchResponse
trong bộ chuyển đổi.
Ghim phiên bản API
Theo mặc định, tiện ích này sử dụng phiên bản API ổn định mới nhất. Để khoá một phiên bản cụ thể, hãy đặt tham số cấu hình cloudsearch.config/apiVersion
thành phiên bản ưu tiên trước khi khởi chạy tiện ích.
Phiên bản API sẽ mặc định là 1.0 nếu bạn không đặt hoặc đặt thành một giá trị không hợp lệ.
Ghim phiên bản tiện ích
Để tránh các thay đổi không mong muốn đối với giao diện tìm kiếm, hãy đặt tham số cấu hình cloudsearch.config/clientVersion
như sau:
gapi.config.update('cloudsearch.config/clientVersion', 1.1);
Phiên bản tiện ích sẽ mặc định là 1.0 nếu bạn không đặt hoặc đặt thành một giá trị không hợp lệ.
Bảo mật giao diện tìm kiếm
Kết quả tìm kiếm chứa thông tin cực kỳ nhạy cảm. Làm theo các phương pháp hay nhất để bảo mật ứng dụng web, đặc biệt là chống lại các cuộc tấn công clickjacking.
Để biết thêm thông tin, hãy xem Dự án hướng dẫn OWASP
Bật tính năng gỡ lỗi
Sử dụng interceptSearchRequest
để bật tính năng gỡ lỗi cho tiện ích tìm kiếm. Ví dụ:
if (!request.requestOptions) {
// Make sure requestOptions is populated
request.requestOptions = {};
}
// Enable debugging
request.requestOptions.debugOptions = {enableDebugging: true}
return request;