Tạo và đăng ký giản đồ

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:

  1. Xác định hành vi dự kiến của người dùng
  2. Khởi chạy nguồn dữ liệu
  3. Xác định các đối tượng
  4. Xác định các thuộc tính của đối tượng
  5. Đăng ký giản đồ
  6. Lập chỉ mục dữ liệu
  7. Kiểm thử giản đồ
  8. Đ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:

  1. Đánh giá nhiều cụm từ tìm kiếm của nhiều người dùng.
  2. Xác định các tập dữ liệu logic hoặc đối tượng, chẳng hạn như "phim".
  3. Xác định thuộc tính (thuộc tính) như tiêu đề hoặc ngày phát hành.
  4. 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".
  5. 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ả.
  6. 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.
  7. 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.

Bản vẽ các mối kết nối lược đồ giữa các thực thể
Hình 1. Giản đồ mẫu có hai đối tượng và một đối tượng phụ.

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"
          }
        }
      }
    ]
  }]
}

PropertyDefinition

  • 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).
  • operatorOptions cho toán tử tìm kiếm.
  • displayOptions cho 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ành true nế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ành true nế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ành true nếu thuộc tính có thể dùng để sắp xếp. Không thể là true nếu isRepeatabletrue hoặ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ành true nế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 isReturnable phải là true.
    • Chỉ được hỗ trợ cho các thuộc tính enum, boolean và văn bản.
  • isWildcardSearchable: Đặt thành true để 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 đặt exactMatchWithOperator:
    • Nếu exactMatchWithOperatortrue: 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 exactMatchWithOperatorfalse: 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ặc fi* khớp với science-fiction, nhưng science-* thì không.

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 lessThanOperatorNamegreaterThanOperatorName 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, isFacetable hoặc isSortable thành true.
  • Đá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 exactMatchWithOperator hoặc retrievalImportance.

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:

  1. Thêm một thuộc tính mới có tên khác vào giản đồ.
  2. Đăng ký giản đồ có cả thuộc tính mới và cũ.
  3. Điền lại chỉ mục chỉ bằng thuộc tính mới.
  4. Xoá thuộc tính cũ khỏi giản đồ.
  5. 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

  1. Tạo giao diện tìm kiếm.
  2. Cải thiện chất lượng tìm kiếm.
  3. Cấu trúc giản đồ để diễn giải cụm từ tìm kiếm tối ưu.
  4. Xác định từ đồng nghĩa.