Tiện ích tìm kiếm cung cấp giao diện tìm kiếm có thể tùy 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ư các khía cạnh và tính năng phân trang. Bạn cũng có thể tuỳ chỉnh các phần của giao diện với CSS và JavaScript.
Nếu bạn cần sự linh hoạt hơn mức mà tiện ích cung cấp, hãy cân nhắc sử dụng API truy vấn. Để biết thông tin về cách tạo giao diện tìm kiếm bằng API truy vấn, hãy tham khảo bài viết Tạo giao diện tìm kiếm bằng API truy vấn.
Xây dựng giao diện tìm kiếm
Việc xây dựng giao diện tìm kiếm yêu cầu nhiều bước:
- Định cấu hình ứng dụng tìm kiếm
- Tạo một ID ứng dụng khách cho ứng dụng
- Thêm đánh dấu HTML cho hộp tìm kiếm và kết quả
- Tải tiện ích con 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 dành cho quản trị viên. Ứng dụng tìm kiếm cung cấp thêm thông tin cho truy vấn, chẳng hạn như các nguồn dữ liệu, khía cạnh và cài đặt chất lượng tìm kiếm.
Để tạo một ứng dụng tìm kiếm, hãy tham khảo bài viết Tạo trải nghiệm tìm kiếm tuỳ chỉnh.
Tạo một ID ứng dụng khách cho ứng dụng
Ngoài các bước trong bài viết Đị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 chú về mã ứng dụng khách đã được tạo. Bạn sẽ cần mã ứng dụng khách để hoàn tất các bước tiếp theo. Tiện ích ứng dụng không cần thiết đối với tiện ích.
Để biết thêm thông tin, hãy xem OAuth 2.0 cho ứng dụng web phía máy khách.
Thêm đánh dấu HTML
Tiện ích con này yêu cầu 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ử để cố định cửa sổ bật lên đề xuấ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 tuỳ chọn điều khiển thuộc tính.
Đoạn mã HTML sau đây cho biết HTML của một 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
của chúng:
Tải tiện ích con
Tiện ích được tải động thông qua tập lệnh trình tải. Để thêm trình tải, hãy sử dụng thẻ <script>
như sau:
Bạn phải cung cấp một lệnh gọi lại onload
trong thẻ tập lệnh. Hàm đượ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 khách API, mô-đun đăng nhập bằng Google và Cloud Search.
Hàm initializeApp()
được gọi sau khi tất 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()
với mã ứng dụng khách đã 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 minh họa cách khởi chạy tiện ích:
Ví dụ trên đề cập đến hai biến cho cấu hình được xác định là:
Tùy 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à ủy quyền cho ứng dụng tại 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 lại trải nghiệm đăng nhập phù hợp hơn với người dùng.
Ủy quyền trực tiếp cho người dùng
Sử dụng tính năng Đăng nhập bằng Google để giám sát trạng thái đăng nhập của người dùng và người dùng đăng nhập hoặc đăng xuất khi cần. Ví dụ: ví dụ sau đây quan sát trạng thái isSignedIn
để theo dõi các thay đổi về việc đă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 chi tiết, hãy xem phần Đăng nhập bằng Google.
Tự động đăng nhập người dùng
Bạn có thể đơn giản hoá trải nghiệm đăng nhập bằng cách ủy quyền trước cho ứng dụng thay mặt cho người dùng trong tổ chức. Kỹ thuật này cũng hữu ích nếu sử dụng Proxy nhận dạng của Cloud để bảo vệ ứng dụng.
Để biết thêm thông tin, hãy xem Sử dụng Đăng nhập bằng Google với Ứng dụng CNTT.
Tuỳ chỉnh giao diện
Bạn có thể thay đổi giao diện tìm kiếm thông qua kết hợp các kỹ thuật:
- Ghi đè kiểu bằng CSS
- Trang trí các thành phần bằng bộ chuyển đổi
- Tạo phần tử tùy 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 đề xuất, phần tử kết quả cũng như kiểm soát phân trang. Bạn có thể định kiểu lại các phần tử này nếu cần.
Trong khi tải, tiện ích tìm kiếm sẽ tải động biểu định kiểu mặc định. Điều này xảy ra sau khi biểu định kiểu ứng dụng được tải, làm tăng mức độ ưu tiên của các quy tắc. Để đảm bảo các kiểu của riêng bạn được ưu tiên hơn so với kiểu mặc định, hãy sử dụng bộ chọn tổ tiên để tăng tính cụ thể của các quy tắc mặc định.
Ví dụ: quy tắc sau sẽ không có hiệu lực nếu được tải trong một thẻ link
hoặc style
tĩnh trong tài liệu.
.cloudsearch_suggestion_container {
font-size: 14px;
}
Thay vào đó, hãy đủ điều kiện cho quy tắc có ID hoặc lớp của vùng chứa đối tượng 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à HTML mẫu do tiện ích tạo ra, hãy xem tài liệu tham khảo Các lớp CSS được hỗ trợ.
Trang trí các thành phần 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à điều chỉnh trình 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 bộ chuyển đổi sau đây thêm một lớp tuỳ chỉnh vào phần tử đề xuất và kết quả.
Để đăng ký trình chuyển đổi này 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:
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ư bất kỳ phần tử con nào. Bạn có thể thêm hoặc xóa phần tử con trong quá trình trang trí. Tuy nhiên, nếu thay đổi cấu trúc các phần tử, hãy cân nhắc tạo trực tiếp các phần tử thay vì trang trí.
Tạo phần tử tùy chỉnh bằng bộ chuyển đổi
Để tạo một phần tử tùy chỉnh cho một đề xuất, vùng chứa thuộc tính hoặc kết quả tìm kiếm, hãy tạo và đăng ký một bộ chuyển đổi có triển khai createSuggestionElement
, createFacetResultElement
hoặc createSearchResultElement
.
Các bộ chuyển đổi sau minh hoạ cách tạo phần tử đề xuất tuỳ chỉnh và
kết quả tìm kiếm bằng thẻ HTML <template>
.
Để điều chỉnh 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 các phần tử thuộc tính tuỳ chỉnh bằng createFacetResultElement
sẽ phải tuân theo một số 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 bằng lớp CSS
cloudsearch_facet_bucket_container
. - Bạn không thể kết xuất các nhóm theo thứ tự khác với nhóm xuất hiện trong phản hồi.
Ví dụ: đoạn mã sau đây sẽ hiển thị các thuộc tính bằng cách sử dụng liên kết thay vì hộp kiểm.
Tùy chỉnh hành vi tìm kiếm
Cài đặt Ứng dụng tìm kiếm đại diện cho cấu hình mặc định cho giao diện tìm kiếm và là tĩnh. Để triển khai bộ lọc động hoặc các khía cạnh, 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 một yêu cầu tìm kiếm bằng bộ chuyển đổi.
Triển khai 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 chặn các yêu cầu hạn chế truy vấn đối với một nguồn do người dùng chọn:
Để đăng ký trình 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 xử lý thay đổi, đặt 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 trình 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 không được đặt hoặc được đặt thành giá trị không hợp lệ.
Ghim phiên bản tiện ích
Để tránh những thay đổi không mong muốn đối với giao diện tìm kiếm, hãy đặt
thông 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 con sẽ mặc định là 1.0 nếu không được đặt hoặc được đặt thành 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ó tính nhạy cảm cao. Làm theo các phương pháp hay nhất để bảo mật ứng dụng web, đặc biệt là đối với các cuộc tấn công jackjacking.
Để 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;