Giản đồ Google Cloud Search là một cấu trúc JSON xác định các đối tượng, thuộc tính và tuỳ chọn để lập chỉ mục và truy vấn dữ liệu. Trình kết nối nội dung của bạn sử dụng giản đồ đã đăng ký để cấu trúc và lập chỉ mục dữ liệu kho lưu trữ.
Bạn tạo giản đồ bằng cách cung cấp đối tượng giản đồ JSON cho API. Bạn phải đăng ký giản đồ cho mỗi kho lưu trữ trước khi lập chỉ mục dữ liệu.
Tài liệu này trình bày các khái niệm cơ bản về cách tạo giản đồ. Để tối ưu hoá trải nghiệm tìm kiếm, hãy xem bài viết Cải thiện chất lượng tìm kiếm.
Tạo giản đồ
Hãy làm theo các bước sau để tạo giản đồ Cloud Search:
- Xác định hành vi dự kiến của người dùng
- Khởi chạy nguồn dữ liệu
- Xác định các đối tượng
- Xác định các thuộc tính của đối tượng
- Đăng ký giản đồ
- Lập chỉ mục dữ liệu
- Kiểm thử giản đồ
- Điều chỉnh giản đồ
Xác định hành vi dự kiến của người dùng
Việc dự đoán cách người dùng tìm kiếm sẽ giúp xác định chiến lược giản đồ. Đối với cơ sở dữ liệu phim, người dùng có thể tìm kiếm "phim có sự tham gia của Robert Redford". Giản đồ của bạn phải hỗ trợ các cụm từ tìm kiếm phim có một diễn viên cụ thể.
Cách điều chỉnh giản đồ cho phù hợp với hành vi của người dùng:
- Đánh giá nhiều cụm từ tìm kiếm của nhiều người dùng.
- Xác định các tập dữ liệu logic hoặc đối tượng, chẳng hạn như "phim".
- Xác định thuộc tính (thuộc tính) như tiêu đề hoặc ngày phát hành.
- Xác định giá trị hợp lệ cho các thuộc tính, chẳng hạn như "Raiders of the Lost Ark".
- Xác định nhu cầu sắp xếp và xếp hạng, chẳng hạn như thứ tự thời gian hoặc điểm xếp hạng của khán giả.
- Xác định các thuộc tính theo bối cảnh, chẳng hạn như vai trò công việc, để cải thiện các đề xuất tự động hoàn thành.
- Liệt kê các đối tượng, thuộc tính và giá trị mẫu này. Sử dụng danh sách này để xác định các tuỳ chọn toán tử.
Khởi chạy nguồn dữ liệu
Nguồn dữ liệu đại diện cho dữ liệu kho lưu trữ đã lập chỉ mục được lưu trữ trong Google Cloud. Xem bài viết Quản lý nguồn dữ liệu của bên thứ ba. Khi người dùng nhấp vào một kết quả, Cloud Search sẽ hướng họ đến mục đó bằng URL từ yêu cầu lập chỉ mục.
Xác định các đối tượng
Đối tượng là đơn vị cơ bản của giản đồ. Các cấu trúc logic như "phim" hoặc "người" là các đối tượng. Mỗi đối tượng có thuộc tính như tiêu đề, thời lượng hoặc tên.
Một giản đồ là danh sách các
định nghĩa đối tượng trong thẻ objectDefinitions.
{
"objectDefinitions": [
{ "name": "movie" },
{ "name": "person" }
]
}
Sử dụng tên duy nhất cho mỗi đối tượng, chẳng hạn như movie. Dịch vụ giản đồ sử dụng các tên này làm khoá. Xem
ObjectDefinition.
Xác định các thuộc tính của đối tượng
Xác định các thuộc tính, chẳng hạn như tiêu đề và ngày phát hành, trong phần propertyDefinitions. Sử dụng
options
cho
freshnessOptions
(xếp hạng) và
displayOptions
(nhãn giao diện người dùng).
{
"objectDefinitions": [{
"name": "movie",
"propertyDefinitions": [
{
"name": "movieTitle",
"isReturnable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": { "operatorName": "title" }
},
"displayOptions": { "displayLabel": "Title" }
},
{
"name": "releaseDate",
"isReturnable": true,
"isSortable": true,
"datePropertyOptions": {
"operatorOptions": {
"operatorName": "released",
"lessThanOperatorName": "releasedbefore",
"greaterThanOperatorName": "releasedafter"
}
}
}
]
}]
}
- Chuỗi
name. - Các tuỳ chọn không phụ thuộc vào loại (ví dụ:
isReturnable). - Một loại và các tuỳ chọn dành riêng cho loại (ví dụ:
textPropertyOptions). operatorOptionscho toán tử tìm kiếm.displayOptionscho nhãn giao diện người dùng.
Bạn có thể sử dụng lại tên thuộc tính trên nhiều đối tượng. Ví dụ: movieTitle
có thể xuất hiện trong cả đối tượng movie và danh sách phim của đối tượng person.
Thêm các tuỳ chọn không phụ thuộc vào loại
PropertyDefinition
bao gồm các tuỳ chọn boolean để định cấu hình chức năng tìm kiếm cho một thuộc tính,
bất kể loại của thuộc tính đó. Các tuỳ chọn này mặc định là false và phải được đặt thành true để sử dụng.
isReturnable: Đặt thànhtruenếu dữ liệu thuộc tính phải được trả về trong kết quả tìm kiếm bằng Query API. Bạn có thể sử dụng các thuộc tính không trả về để tìm kiếm hoặc xếp hạng mà không xuất hiện trong kết quả.isRepeatable: Đặt thànhtruenếu thuộc tính có thể có nhiều giá trị. Ví dụ: một bộ phim có một ngày phát hành nhưng có nhiều diễn viên.isSortable: Đặt thànhtruenếu thuộc tính có thể dùng để sắp xếp. Không thể làtruenếuisRepeatablelàtruehoặc nếu thuộc tính nằm trong một đối tượng phụ có thể lặp lại.isFacetable: Đặt thànhtruenếu thuộc tính có thể dùng để tạo các khía cạnh (thuộc tính dùng để tinh chỉnh kết quả tìm kiếm).- Yêu cầu
isReturnablephải làtrue. - Chỉ được hỗ trợ cho các thuộc tính enum, boolean và văn bản.
- Yêu cầu
isWildcardSearchable: Đặt thànhtrueđể cho phép người dùng thực hiện tìm kiếm bằng ký tự đại diện trên thuộc tính này. Tuỳ chọn này chỉ có trên các thuộc tính văn bản và hành vi của tuỳ chọn này phụ thuộc vào chế độ cài đặtexactMatchWithOperator:- Nếu
exactMatchWithOperatorlàtrue: Giá trị văn bản được coi là một mã thông báo duy nhất. Một cụm từ tìm kiếm nhưscience-*khớp với giá trịscience-fiction. - Nếu
exactMatchWithOperatorlàfalse: Giá trị văn bản được mã hoá thành mã thông báo. Một cụm từ tìm kiếm nhưsci*hoặcfi*khớp vớiscience-fiction, nhưngscience-*thì không.
- Nếu
Xác định loại
Đặt kiểu dữ liệu bằng cách xác định đối tượng tuỳ chọn thuộc tính thích hợp (ví dụ: textPropertyOptions). Sử dụng enum (enumPropertyOptions) nếu bạn biết tất cả các giá trị có thể có. Một thuộc tính chỉ có thể có một kiểu dữ liệu.
Xác định các tuỳ chọn toán tử
operatorOptions mô tả cách một thuộc tính hoạt động như một toán tử tìm kiếm.
Mỗi operatorOptions cần có một operatorName (ví dụ: title). Đây là tham số mà người dùng nhập trong các cụm từ tìm kiếm (ví dụ: title:titanic). Sử dụng tên trực quan và hiển thị cho người dùng.
Bạn có thể chia sẻ operatorName trên các thuộc tính cùng loại. Các cụm từ tìm kiếm sử dụng tên đó sẽ truy xuất kết quả từ tất cả các thuộc tính khớp.
Các thuộc tính có thể sắp xếp có thể bao gồm lessThanOperatorName và greaterThanOperatorName cho các cụm từ tìm kiếm so sánh. Các thuộc tính văn bản có thể sử dụng exactMatchWithOperator để coi toàn bộ giá trị là một mã thông báo duy nhất.
Thêm tuỳ chọn hiển thị
Phần displayOptions không bắt buộc chứa displayLabel. Đây là nhãn thân thiện với người dùng xuất hiện trong kết quả tìm kiếm.
Thêm toán tử lọc đề xuất
Sử dụng suggestionFilteringOperators[] để xác định một thuộc tính lọc các đề xuất tự động hoàn thành (ví dụ: lọc các đề xuất phim theo thể loại mà người dùng ưu tiên). Bạn chỉ có thể xác định một bộ lọc đề xuất.
Đăng ký giản đồ
Đăng ký giản đồ với dịch vụ giản đồ bằng mã nguồn dữ liệu. Đưa ra yêu UpdateSchema:
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
Sử dụng validateOnly: true để kiểm thử giản đồ mà không cần đăng ký.
Lập chỉ mục dữ liệu
Sau khi đăng ký, hãy điền nguồn dữ liệu bằng các lệnh gọi Index, thường là bằng trình kết nối.
Yêu cầu lập chỉ mục mẫu:
{
"name": "datasource/<data_source_id>/items/titanic",
"metadata": {
"title": "Titanic",
"objectType": "movie"
},
"structuredData": {
"object": {
"properties": [{
"name": "movieTitle",
"textValues": { "values": ["Titanic"] }
}]
}
},
"itemType": "CONTENT_ITEM"
}
Kiểm thử giản đồ
Kiểm thử với một kho lưu trữ nhỏ trước khi sản xuất. Tạo một danh sách kiểm soát quyền truy cập (ACL) giới hạn kết quả cho người dùng thử nghiệm.
- Cụm từ tìm kiếm chung: Tìm kiếm một chuỗi (ví dụ: "titanic") để xem tất cả các mục khớp .
- Cụm từ tìm kiếm toán tử: Sử dụng toán tử (ví dụ:
actor:Zane) để giới hạn kết quả.
Điều chỉnh giản đồ
Theo dõi ý kiến phản hồi của người dùng và điều chỉnh giản đồ. Bạn có thể lập chỉ mục các trường mới hoặc đổi tên toán tử để trực quan hơn.
Lập chỉ mục lại sau khi thay đổi giản đồ
Bạn không cần lập chỉ mục lại đối với những thay đổi sau:
- Tên toán tử.
- Giới hạn số.
- Xếp hạng theo thứ tự.
- Tuỳ chọn về độ mới hoặc hiển thị.
Bạn phải lập chỉ mục lại đối với:
- Thêm hoặc xoá thuộc tính hoặc đối tượng.
- Thay đổi
isReturnable,isFacetablehoặcisSortablethànhtrue. - Đánh dấu thuộc tính
isSuggestable.
Các thay đổi về thuộc tính không được phép
Những thay đổi làm hỏng chỉ mục hoặc gây ra kết quả không nhất quán không được phép, bao gồm:
- Kiểu dữ liệu hoặc tên thuộc tính.
- Chế độ cài đặt
exactMatchWithOperatorhoặcretrievalImportance.
Thực hiện thay đổi giản đồ phức tạp
Để thực hiện thay đổi không được phép, hãy di chuyển các thuộc tính từ định nghĩa cũ sang định nghĩa mới:
- Thêm một thuộc tính mới có tên khác vào giản đồ.
- Đăng ký giản đồ có cả thuộc tính mới và cũ.
- Điền lại chỉ mục chỉ bằng thuộc tính mới.
- Xoá thuộc tính cũ khỏi giản đồ.
- Cập nhật mã truy vấn để sử dụng tên thuộc tính mới.
Cloud Search ghi lại các mục đã xoá trong 30 ngày để ngăn các vấn đề về việc sử dụng lại.
Giới hạn về kích thước
- Tối đa 10 đối tượng cấp cao nhất.
- Độ sâu tối đa là 10 cấp.
- Tối đa 1000 trường cho mỗi đối tượng (bao gồm cả các trường lồng nhau).
Các bước tiếp theo
- Tạo giao diện tìm kiếm.
- Cải thiện chất lượng tìm kiếm.
- Cấu trúc giản đồ để diễn giải cụm từ tìm kiếm tối ưu.
- Xác định từ đồng nghĩa.