Tiện ích tìm kiếm cung cấp giao diện tìm kiếm có thể tuỳ chỉnh dà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ư thuộc tính và phân trang. Bạn cũng có thể tuỳ chỉnh các phần của giao diện bằng CSS và JavaScript.
Nếu bạn cần sự linh hoạt hơn so với khả năng của tiện ích, 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, tham khảo 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 cần vài bước sau:
- Định cấu hình ứng dụng tìm kiếm
- Tạo mã ứng dụng khách 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 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ư nguồn dữ liệu, thuộc tính và chất lượng tìm kiếm.
Để tạo một ứng dụng tìm kiếm, hãy tham khảo Tạo trải nghiệm tìm kiếm tuỳ chỉnh.
Tạo mã ứng dụng khách cho ứng dụng
Ngoài các bước trong Định cấu hình quyền truy cập vào Google Cloud Search API, bạn cũng phải tạo ID ứ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 Web browser (Trình duyệt web)
- Cung cấp URI gốc ứng dụng của bạn.
- 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. Không bắt buộc phải có mật khẩu ứng dụng khách cho 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 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
của hộp tìm kiếm. - Một phần tử để neo cửa sổ đề xuất bật lên.
- 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 chế độ điều khiển thuộc tính.
Đoạn mã HTML sau hiển thị HTML cho một tiện ích tìm kiếm, nơi
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
Tiện ích này được tải động thông qua một tập lệnh của trình tải. Để bao gồm
trình tải, hãy dùng thẻ <script>
như dưới đây:
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, mô-đun Đăng nhập bằng Google và mô-đun Cloud Search.
Hàm initializeApp()
được gọi sau khi tất cả các mô-đun được
đã tải xong.
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()
có mã ứng dụng khách đã tạo của bạn
và phạm vi https://www.googleapis.com/auth/cloud_search.query
. Tiếp theo, hãy sử dụng
gapi.cloudsearch.widget.resultscontainer.Builder
và
gapi.cloudsearch.widget.searchbox.Builder
lớp để định cấu hình tiện ích
và liên kết nó với các phần tử HTML của bạn.
Ví dụ sau đây trình bày cách khởi chạy tiện ích:
Ví dụ ở trên tham chiếu hai biến cho 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à cấp quyền cho ứ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 lại trải nghiệm đăng nhập phù hợp hơn cho người dùng.
Cấp phép 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ười dùng đăng nhập hoặc đăng xuất khi cần. Ví dụ: như sau
Ví dụ: isSignedIn
để giám sát các thay đổi về đăng nhập và
sử dụng GoogleAuth.signIn()
phương thức bắt đầu đăng nhập từ một nút
nhấp vào:
Để biết thêm thông tin, 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á trải nghiệm đăng nhập hơn nữa bằng cách cho phép trước 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 sử dụng Proxy Cloud Identity Aware để bảo vệ ứng dụng.
Để biết thêm thông tin, hãy xem phần 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 bằng cách kết hợp kỹ thuật:
- Ghi đè kiểu bằng CSS
- Trang trí các phần tử bằng bộ chuyển đổi
- Tạo phần tử 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 phần đề xuất và phần tử kết quả cũng như các chế độ kiểm soát phân trang. Bạn có thể định kiểu lại các thành phần này nếu cần.
Trong khi tải, tiện ích tìm kiếm sẽ tự động tải biểu định kiểu mặc định. Điều này xảy ra sau khi biểu định kiểu của ứng dụng được tải, làm tăng mức độ ưu tiên 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, sử dụng bộ chọn đối tượng cấp trên để tăng mức độ 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 ở trạng thái tĩnh
Thẻ link
hoặc style
trong tài liệu.
.cloudsearch_suggestion_container {
font-size: 14px;
}
Thay vào đó, hãy đáp ứng điều kiện cho quy tắc này bằng mã 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 này tạo ra, hãy xem Tài liệu tham khảo về 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ý lại
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ụ: những bộ chuyển đổi sau đây thêm một lớp tuỳ chỉnh vào đề xuất và phần tử kết quả.
Để đăng ký bộ chuyển đổi khi khởi chạy tiện ích, hãy sử dụng setAdapter()
của lớp Builder
tương ứng:
Trang trí có thể chỉnh sửa các thuộc tính của phần tử vùng chứa cũng như bất kỳ các 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 thay đổi cấu trúc cho các phần tử, hãy cân nhắc tạo thay vì trang trí.
Tạo phần tử tuỳ chỉnh bằng bộ chuyển đổi
Để tạo phần tử tùy chỉnh cho đề xuất, vùng chứa thuộc tính hoặc kết quả tìm kiếm,
tạo và đăng ký bộ chuyển đổi giúp triển khai
createSuggestionElement
,
createFacetResultElement
,
hoặc createSearchResultElement
theo cách thể hiện.
Các bộ chuyển đổi sau đây minh hoạ cách tạo nội dung đề xuất tuỳ chỉnh và kết quả tìm kiếm
bằng cách sử dụng thẻ <template>
HTML.
Để đăng ký lại bộ chuyển đổi khi khởi chạy tiện ích, hãy sử dụng setAdapter()
của lớp Builder
tương ứng:
Tạo các phần tử thuộc tính tuỳ chỉnh bằng createFacetResultElement
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 mà người dùng nhấp vào để bật/tắt một bộ chứa. - Bạn phải gói mỗi nhóm trong một phần tử chứa CSS
lớp
cloudsearch_facet_bucket_container
. - Bạn không thể hiển thị các nhóm theo thứ tự khác với thứ tự xuất hiện trong của bạn.
Ví dụ: đoạn mã sau đây hiển thị các thuộc tính bằng cách sử dụng đường liên kết hộp kiểm.
Tuỳ chỉnh hành vi tìm kiếm
Chế độ cài đặt Ứng dụng tìm kiếm thể hiện chế độ mặc định cho giao diện tìm kiếm và ở dạng tĩnh. Để triển khai động bộ lọc hoặc khía cạnh, chẳng hạn như cho phép người dùng bật/tắt nguồn dữ liệu, bạn có thể ghi đè các 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 bộ chuyển đổi.
Triển khai bộ chuyển đổi bằng
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 thành 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
setAdapter()
khi tạo ResultsContainer
HTML sau được dùng để hiển thị hộp chọn để lọc theo nguồn:
Đoạn mã sau đây theo dõi sự 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 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 ổn định mới nhất của API. Để cố gắng
phiên bản cụ thể, hãy đặt thông số cấu hình cloudsearch.config/apiVersion
vào phiên bản bạn muốn trước khi khởi chạy tiện ích.
Phiên bản API sẽ được đặt thành 1.0 theo mặc định nếu không được đặ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 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ư dưới đây:
gapi.config.update('cloudsearch.config/clientVersion', 1.1);
Phiên bản tiện ích sẽ mặc định là 1.0 nếu không được đặt hoặc đượ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ó mức độ nhạy cảm cao. Làm theo các phương pháp hay nhất để bảo mật các ứng dụng web, đặc biệt là 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 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;