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

Sơ đồ Google Cloud Search là một cấu trúc JSON xác định các đối tượng, thuộc tính và lựa 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 một đối tượng giản đồ JSON cho API. Bạn phải đăng ký một 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 những kiến thức 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 phần 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 tạo nguồn dữ liệu
  3. Xác định các đối tượng của bạn
  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 của bạn
  7. Kiểm thử giản đồ
  8. Điều chỉnh giản đồ của bạ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 bạn 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 truy vấn về 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 (đặc điểm) 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ư theo thứ tự thời gian hoặc mức đánh giá của khán giả.
  6. Xác định các thuộc tính ngữ 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 lựa chọn về 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ữ được lập chỉ mục và lưu trữ trong Google Cloud. Xem phần Quản lý nguồn dữ liệu bên thứ ba. Khi người dùng nhấp vào một kết quả, Cloud Search sẽ chuyển hướng họ đến mục đó bằng URL trong 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 một 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 đều 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. Một giản đồ mẫu có 2 đối tượng và một đối tượng phụ.

Lược đồ 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 riêng biệt cho từng đố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 phần 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 bao gồm:

  • Một chuỗi name.
  • Các lựa chọn không phụ thuộc vào loại (ví dụ: isReturnable).
  • Một loại và các lựa 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 lựa chọn không phụ thuộc vào loại

PropertyDefinition bao gồm các lựa chọn boolean để định cấu hình chức năng tìm kiếm cho một tài sản, bất kể loại tài sản đó là gì. Theo mặc định, các lựa chọn này được đặt thành false và phải được đặt thành true để sử dụng.

  • isReturnable: Đặt thành true nếu dữ liệu tài sản sẽ được trả về trong kết quả tìm kiếm bằng Query API. Bạn có thể 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 có thể dùng thuộc tính này để 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 có thể dùng thuộc tính này để tạo 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. Lựa chọn này chỉ có trên các thuộc tính văn bản và hành vi của lựa 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 truy vấn như science-* sẽ khớp với giá trị science-fiction.
    • Nếu exactMatchWithOperatorfalse: Giá trị văn bản được mã hoá. Một truy vấn 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 lựa 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ể. Một tài sản chỉ có thể có một loại dữ liệu.

Xác định các lựa chọn về 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 đều cần một operatorName (ví dụ: title). Đây là tham số mà người dùng nhập vào truy vấn (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 tài sản cùng loại. Các truy vấn sử dụng tên đó sẽ truy xuất kết quả từ tất cả các tài sản phù hợp.

Các thuộc tính có thể sắp xếp có thể bao gồm lessThanOperatorNamegreaterThanOperatorName cho các truy vấn so sánh. Các thuộc tính văn bản có thể dùng exactMatchWithOperator để coi toàn bộ giá trị là một mã thông báo duy nhất.

Thêm các lựa chọn hiển thị

Phần displayOptions (không bắt buộc) chứa một 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 về 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 đồ của bạn với dịch vụ giản đồ bằng mã nhận dạng nguồn dữ liệu. Đưa ra yêu cầ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 sẵn nguồn dữ liệu bằng cách sử dụng các lệnh gọi Index, thường là bằng một trình kết nối.

Ví dụ về yêu cầu lập chỉ mục:

{
  "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 đồ

Thử nghiệm với một kho lưu trữ nhỏ trước khi sản xuất. Tạo một 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 trùng khớp.
  • Cụm từ tìm kiếm có toán tử: Sử dụng một 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 đồ của bạn. Bạn có thể lập chỉ mục các trường mới hoặc đổi tên toán tử để dễ hiểu 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 để thay đổi:

  • Tên nhà mạng.
  • Giới hạn về số.
  • Thứ hạng theo thứ tự.
  • Độ mới mẻ hoặc các lựa chọn hiển thị.

Bạn phải lập chỉ mục lại cho:

  • Thêm hoặc xoá các đối tượng hoặc tài sản.
  • Thay đổi isReturnable, isFacetable hoặc isSortable thành true.
  • Đánh dấu một tài sản isSuggestable.

Các thay đổi không được phép đối với tài sản

Bạn không được thực hiện 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, bao gồm:

  • Tên hoặc kiểu dữ liệu của tài sản.
  • Chế độ cài đặt exactMatchWithOperator hoặc retrievalImportance.

Thực hiện thay đổi giản đồ phức tạp

Để thực hiện một thay đổi không được phép, hãy di chuyển các thuộc tính từ một định nghĩa cũ sang một đị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 đồ bằng 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 chặ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 1.000 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 một 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 một giản đồ để diễn giải truy vấn tối ưu.
  4. Định nghĩa từ đồng nghĩa.