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 được sử dụng trong việc lập chỉ mục và truy vấn dữ liệu của bạn. Trình kết nối nội dung sẽ đọc dữ liệu trong kho lưu trữ của bạn và dựa trên giản đồ, cấu trúc và lập chỉ mục đã đăng ký cho dữ liệu.

Bạn có thể tạo giản đồ bằng cách cung cấp đối tượng giản đồ JSON cho API rồi đăng ký tài khoản. Bạn phải đăng ký một đối tượng giản đồ cho mỗi kho lưu trữ trước khi bạn có thể lập chỉ mục dữ liệu của mình.

Tài liệu này trình bày các kiến thức cơ bản về việc tạo giản đồ. Để biết thông tin về cách thực hiện để điều chỉnh giản đồ của bạn nhằm cải thiện trải nghiệm tìm kiếm, hãy tham khảo Cải thiện chất lượng tìm kiếm.

Tạo giản đồ

Sau đây là danh sách các bước dùng để 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 một nguồn dữ liệu
  3. Tạo giản đồ
  4. Hoàn tất giản đồ mẫu
  5. Đăng ký giản đồ của bạn
  6. Lập chỉ mục dữ liệu
  7. Kiểm tra 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ác loại cụm từ tìm kiếm mà người dùng đưa ra sẽ giúp bạn định hướng chiến lược của mình để tạo giản đồ.

Ví dụ: khi đưa ra truy vấn dựa trên cơ sở dữ liệu phim, bạn có thể dự đoán người dùng đưa ra một truy vấn chẳng hạn như "Cho tôi xem tất cả các phim có sự tham gia của Robert Redford". Do đó, giản đồ của bạn phải hỗ trợ các kết quả truy vấn dựa trên "tất cả các phim có một diễn viên cụ thể".

Để xác định giản đồ nhằm phản ánh mẫu hành vi của người dùng, hãy cân nhắc thực hiện những tác vụ này:

  1. Đánh giá một tập hợp đa dạng các cụm từ tìm kiếm mong muốn của những người dùng khác nhau.
  2. Xác định các đối tượng có thể được dùng trong truy vấn. Đối tượng có tính logic tập dữ liệu có liên quan, chẳng hạn như một bộ phim trong cơ sở dữ liệu về phim ảnh.
  3. Xác định các thuộc tính và giá trị tạo nên đối tượng và có thể là được dùng trong truy vấn. Thuộc tính là các thuộc tính có thể lập chỉ mục của đối tượng; chúng có thể bao gồm các giá trị gốc hoặc các đối tượng khác. Ví dụ: một đối tượng phim có thể có các thuộc tính như tên phim và ngày phát hành dưới dạng giá trị gốc. Đối tượng phim cũng có thể chứa các thuộc tính khác các đối tượng (chẳng hạn như thành viên tham gia) có các thuộc tính riêng, chẳng hạn như tên hoặc vai trò.
  4. Xác định ví dụ về các giá trị hợp lệ cho thuộc tính. Giá trị là dữ liệu thực tế được lập chỉ mục cho một thuộc tính. Ví dụ: tên phim trong cơ sở dữ liệu của bạn có thể là "Raiders of the Lost Ark."
  5. Xác định những cách sắp xếp và xếp hạng mà người dùng mong muốn. Ví dụ: khi truy vấn phim, người dùng có thể muốn sắp xếp theo trình tự thời gian và xếp hạng theo mức phân loại của người xem và không cần sắp xếp theo thứ tự bảng chữ cái.
  6. (không bắt buộc) Cân nhắc xem một trong các cơ sở lưu trú của bạn có đại diện cho một ngữ cảnh mà tìm kiếm có thể được thực thi, chẳng hạn như cụm từ tìm kiếm của người dùng vai trò công việc hoặc để có thể cung cấp đề xuất tự động hoàn thành dựa trên ngữ cảnh. Ví dụ: đối với những người tìm kiếm cơ sở dữ liệu về phim ảnh, người dùng có thể chỉ quan tâm đến một thể loại phim nhất định. Người dùng sẽ xác định những gì thể loại nội dung mà họ muốn tìm kiếm trở lại, có thể là một phần của người dùng hồ sơ. Sau đó, khi người dùng bắt đầu nhập truy vấn về phim, chỉ phim thuộc thể loại họ ưa thích, chẳng hạn như "phim hành động", được đề xuất là của đề xuất tự động hoàn thành.
  7. Lập danh sách các đối tượng, thuộc tính và giá trị mẫu có thể dùng trong các lượt tìm kiếm. (Để biết thông tin chi tiết về cách sử dụng danh sách này, hãy xem phần 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 từ một kho lưu trữ đã được lập chỉ mục và được lưu trữ trong Google Cloud. Để xem hướng dẫn về cách khởi tạo một nguồn dữ liệu, tham chiếu đến Quản lý nguồn dữ liệu của bên thứ ba.

Kết quả tìm kiếm của người dùng được trả về từ nguồn dữ liệu. Khi người dùng nhấp vào kết quả tìm kiếm, Cloud Search sẽ chuyển người dùng đến mục thực tế bằng cách sử dụng URL được cung cấp trong yêu cầu lập chỉ mục.

Xác định đối tượng

Đơn vị dữ liệu cơ bản trong giản đồ là đối tượng, còn được gọi là giản đồ " đối tượng", đó là một cấu trúc logic của dữ liệu. Trong cơ sở dữ liệu phim, một cấu trúc logic của dữ liệu là "phim". Một đối tượng khác có thể là "người" đến đại diện cho dàn diễn viên và đoàn làm phim tham gia bộ phim.

Mỗi đối tượng trong giản đồ có một loạt các thuộc tính hoặc thuộc tính mô tả đối tượng, chẳng hạn như tiêu đề và thời lượng của một bộ phim hoặc tên và ngày sinh của một người. Các thuộc tính của một đối tượng có thể bao gồm phần tử gốc giá trị hoặc đối tượng khác.

Hình 1 hiển thị các đối tượng phim và người cũng như các đối tượng liên kết các thuộc tính.

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

Giản đồ Cloud Search là về cơ bản là danh sách các câu lệnh định nghĩa đối tượng được xác định trong Thẻ objectDefinitions. Đoạn mã giản đồ sau đây cho thấy các câu lệnh objectDefinitions cho đối tượng giản đồ phim và giản đồ person.

{
  "objectDefinitions": [
    {
      "name": "movie",
      ...
    },
    {
      "name": "person",
      ...
    }
  ]
}

Khi xác định một đối tượng giản đồ, bạn cần cung cấp name cho đối tượng này phải là duy nhất trong số tất cả các đối tượng khác trong giản đồ. Thông thường, bạn sẽ sử dụng name mô tả đối tượng, chẳng hạn như movie cho đối tượng phim. Giản đồ dịch vụ này sử dụng trường name làm giá trị nhận dạng khoá cho các đối tượng có thể lập chỉ mục. Cho để biết thêm thông tin về trường name, hãy tham khảo Định nghĩa đối tượng.

Xác định thuộc tính của đối tượng

Như đã nêu trong tài liệu tham khảo cho ObjectDefinition, theo sau là tên đối tượng là một tập hợp options! và danh sách propertyDefinitions. Chiến lược phát hành đĩa đơn options có thể còn bao gồm freshnessOptionsdisplayOptions. Chiến lược phát hành đĩa đơn freshnessOptions được dùng để điều chỉnh thứ hạng tìm kiếm dựa trên độ mới của một mặt hàng. Chiến lược phát hành đĩa đơn displayOptions được dùng để xác định xem các nhãn và thuộc tính cụ thể có được hiển thị trong các kết quả tìm kiếm cho một đối tượng.

Chiến lược phát hành đĩa đơn propertyDefinitions là nơi bạn xác định các thuộc tính cho một đối tượng, chẳng hạn như tên phim và ngày phát hành.

Đoạn mã sau đây cho thấy đối tượng movie có hai thuộc tính: movieTitlereleaseDate.

{
  "objectDefinitions": [
    {
      "name": "movie",
      "propertyDefinitions": [
        {
          "name": "movieTitle",
          "isReturnable": true,
          "isWildcardSearchable": 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"
            }
          },
          "displayOptions": {
            "displayLabel": "Release date"
          }
      ...
      ]
    }
  ]
}

Chiến lược phát hành đĩa đơn PropertyDefinition bao gồm các mục sau:

  • chuỗi name.
  • Danh sách các tuỳ chọn không phân biệt về loại, chẳng hạn như isReturnable trong phần trước đoạn trích.
  • Một loại và các tuỳ chọn cụ thể về từng loại được liên kết, như textPropertyOptionsretrievalImportance trong đoạn mã trước đó.
  • operatorOptions mô tả cách thuộc tính được sử dụng làm toán tử tìm kiếm.
  • Một hoặc nhiều displayOptions, chẳng hạn như displayLabel trong đoạn mã trước.

name của một thuộc tính phải là duy nhất trong đối tượng chứa nhưng tên này vẫn có thể được dùng trong các đối tượng và đối tượng phụ khác. Trong Hình 1, tên phim và ngày phát hành đã được xác định hai lần: một lần vào đối tượng movie và lặp lại trong đối tượng phụ filmography của Đối tượng person. Giản đồ này sử dụng lại trường movieTitle để giản đồ này có thể hỗ trợ 2 loại hành vi tìm kiếm:

  • Hiện kết quả phim khi người dùng tìm tên một bộ phim.
  • Hiện kết quả về người khi người dùng tìm tên phim mà một diễn viên đã đóng.

Tương tự, giản đồ này cũng sử dụng lại trường releaseDate vì trường đó có cùng ý nghĩa của hai trường movieTitle.

Trong quá trình phát triển giản đồ của riêng bạn, hãy cân nhắc mối liên hệ giữa kho lưu trữ các trường chứa dữ liệu mà bạn muốn khai báo nhiều lần trong giản đồ.

Thêm các tuỳ chọn không phân biệt về loại

Chiến lược phát hành đĩa đơn PropertyDefinition liệt kê các tuỳ chọn chức năng tìm kiếm chung chung cho tất cả sản phẩm bất kể loại dữ liệu là gì.

  • isReturnable – Cho biết liệu tài sản có xác định được dữ liệu cần được được trả về trong kết quả tìm kiếm qua API Truy vấn. Toàn bộ phim ví dụ thuộc tính có thể trả về. Những thuộc tính không thể trả về có thể được dùng để tìm kiếm hoặc xếp hạng kết quả mà không cần trả lại cho người dùng.
  • isRepeatable – Cho biết thuộc tính có được phép sử dụng nhiều giá trị hay không. Cho ví dụ: một bộ phim chỉ có một ngày phát hành nhưng có thể có nhiều diễn viên.
  • isSortable – Cho biết thuộc tính có thể được dùng để sắp xếp. Chiến dịch này không thể đúng đối với những thuộc tính có thể lặp lại. Ví dụ: kết quả tìm kiếm phim có thể được sắp xếp theo ngày phát hành hoặc xếp hạng khán giả.
  • isFacetable – Cho biết thuộc tính có thể được dùng để tạo các thuộc tính. Một khía cạnh được dùng để tinh chỉnh kết quả tìm kiếm, qua đó người dùng nhìn thấy các kết quả ban đầu, sau đó thêm tiêu chí hoặc thuộc tính để tinh chỉnh thêm các kết quả đó kết quả. Lựa chọn này không thể đúng đối với các thuộc tính có loại là đối tượng và Giá trị isReturnable phải là true để đặt tuỳ chọn này. Cuối cùng, phương án này chỉ được hỗ trợ cho các thuộc tính enum, boolean và văn bản. Ví dụ: trong giản đồ mẫu, chúng tôi có thể tạo genre, actorName, userRatingmpaaRating có thể chỉnh sửa trên khuôn mặt để cho phép chúng được dùng để tinh chỉnh tính tương tác của kết quả tìm kiếm.
  • isWildcardSearchable cho biết rằng người dùng có thể thực hiện tìm kiếm theo ký tự đại diện cho 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. Cách ký tự đại diện Tính năng tìm kiếm hoạt động trên trường văn bản phụ thuộc vào giá trị đã đặt trong Trường exactMatchWithOperator. Nếu bạn đặt exactMatchWithOperator thành true, giá trị văn bản được mã hoá thành một giá trị nguyên tử và một lượt tìm kiếm theo ký tự đại diện là đã thực hiện dựa trên hiệu suất đó. Ví dụ: nếu giá trị văn bản là science-fiction, một truy vấn ký tự đại diện science-* khớp với cụm từ đó. Nếu bạn đặt exactMatchWithOperator thành false, giá trị văn bản được mã hoá và tìm kiếm theo ký tự đại diện được thực hiện dựa trên từng mã thông báo. Ví dụ: nếu giá trị văn bản là "khoa học viễn tưởng", thì ký tự đại diện truy vấn sci* hoặc fi* khớp với mục, nhưng science-* không khớp với mục đó.

Các tham số chức năng tìm kiếm chung này đều là giá trị boolean; chúng tất cả đều có giá trị mặc định là false và phải được đặt thành true để sử dụng.

Bảng sau đây cho thấy các tham số boolean được đặt thành true cho mọi thuộc tính của đối tượng movie:

Thuộc tính isReturnable isRepeatable isSortable isFacetable isWildcardSearchable
movieTitle đúng đúng
releaseDate đúng đúng
genre đúng đúng đúng
duration đúng
actorName đúng đúng đúng đúng
userRating đúng đúng
mpaaRating đúng đúng

Cả genreactorName đều đã đặt isRepeatable thành true vì một bộ phim có thể thuộc nhiều thể loại và thường có có nhiều hơn một diễn viên. Một thuộc tính không thể sắp xếp được nếu thuộc tính đó có thể lặp lại hoặc nằm trong một đối tượng phụ có thể lặp lại.

Xác định loại

Chiến lược phát hành đĩa đơn PropertyDefinition phần tham chiếu liệt kê một số xxPropertyOptions, trong đó xx là một loại cụ thể, chẳng hạn như boolean. Để đặt loại dữ liệu cho thuộc tính, bạn phải xác định đối tượng kiểu dữ liệu thích hợp. Xác định đối tượng kiểu dữ liệu cho thuộc tính sẽ thiết lập loại dữ liệu của tài sản đó. Ví dụ: xác định textPropertyOptions cho thuộc tính movieTitle cho biết phim này tiêu đề là loại văn bản. Đoạn mã sau đây cho thấy thuộc tính movieTitle khi textPropertyOptions đặt loại dữ liệu.

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    ...
  },
  ...
},

Mỗi tài sản chỉ có thể được liên kết với một loại dữ liệu. Ví dụ: trong phim của chúng tôi Giản đồ, releaseDate chỉ có thể là một ngày (ví dụ: 2016-01-13) hoặc một chuỗi (ví dụ: January 13, 2016), nhưng không phải cả hai.

Dưới đây là các đối tượng kiểu dữ liệu dùng để chỉ định kiểu dữ liệu cho trong giản đồ phim mẫu:

Thuộc tính Đối tượng kiểu dữ liệu
movieTitle textPropertyOptions
releaseDate datePropertyOptions
genre enumPropertyOptions
duration textPropertyOptions
actorName textPropertyOptions
userRating integerPropertyOptions
mpaaRating textPropertyOptions

Loại dữ liệu mà bạn chọn cho tài sản phụ thuộc vào các trường hợp sử dụng dự kiến của bạn. Trong tình huống tưởng tượng của giản đồ phim này, người dùng được kỳ vọng muốn sắp xếp kết quả theo trình tự thời gian, vì vậy releaseDate là đối tượng ngày tháng. Ví dụ: nếu có một trường hợp sử dụng dự kiến là so sánh các bản phát hành vào tháng 12 trong những năm có bản phát hành vào tháng 1, thì định dạng chuỗi có thể hữu ích.

Định cấu hình các tuỳ chọn theo từng loại

Chiến lược phát hành đĩa đơn PropertyDefinition phần tham khảo liên kết đến các lựa chọn cho từng loại. Cụ thể nhất cho từng loại là không bắt buộc, ngoại trừ danh sách possibleValues trong enumPropertyOptions Ngoài ra, tuỳ chọn orderedRanking cho phép bạn tương ứng với nhau. Chiến lược phát hành đĩa đơn đoạn mã sau cho biết thuộc tính movieTitletextPropertyOptions việc đặt loại dữ liệu và bằng tuỳ chọn dành riêng cho từng loại retrievalImportance.

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    "retrievalImportance": { "importance": "HIGHEST" },
    ...
  },
  ...
}

Dưới đây là các tuỳ chọn bổ sung dành riêng cho từng loại được dùng trong giản đồ mẫu:

Thuộc tính Loại Tuỳ chọn theo từng loại
movieTitle textPropertyOptions retrievalImportance
releaseDate datePropertyOptions
genre enumPropertyOptions
duration textPropertyOptions
actorName textPropertyOptions
userRating integerPropertyOptions orderedRanking, maximumValue
mpaaRating textPropertyOptions

Xác định các tuỳ chọn toán tử

Ngoài các tuỳ chọn riêng cho từng loại, mỗi loại còn có một tập hợp các tuỳ chọn operatorOptions Những lựa chọn này mô tả cách tài sản được sử dụng làm toán tử tìm kiếm. Đoạn mã sau đây cho thấy thuộc tính movieTitletextPropertyOptions cài đặt loại dữ liệu và bằng tham số Các tuỳ chọn cụ thể theo loại retrievalImportanceoperatorOptions.

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    "retrievalImportance": { "importance": "HIGHEST" },
    "operatorOptions": {
      "operatorName": "title"
    }
  },
  ...
}

Mỗi operatorOptions có một operatorName, chẳng hạn như title cho một movieTitle. Tên toán tử là toán tử tìm kiếm của thuộc tính. Đáp toán tử tìm kiếm là thông số thực tế mà bạn muốn người dùng sử dụng khi thu hẹp phạm vi tìm kiếm. Ví dụ: để tìm kiếm phim dựa trên tên phim, người dùng sẽ nhập title:movieName, trong đó movieName là tên của một bộ phim.

Tên nhà vận hành không cần phải giống với tên của tài sản. Thay vào đó, bạn nên sử dụng tên toán tử phản ánh những từ thông dụng nhất do người dùng trong tổ chức của bạn tạo ra. Ví dụ: nếu người dùng của bạn thích cụm từ "tên" thay vì "title" cho một tựa phim, thì tên toán tử sẽ là được đặt thành "name".

Bạn có thể sử dụng cùng một tên toán tử cho nhiều thuộc tính, miễn là tất cả các thuộc tính sẽ phân giải thành cùng một loại. Khi sử dụng tên toán tử dùng chung trong khoảng thời gian một truy vấn thì tất cả thuộc tính sử dụng tên toán tử đó đều được truy xuất. Ví dụ: giả sử đối tượng phim có plotSummaryplotSynopsis và mỗi thuộc tính trong số này có operatorNameplot. Như miễn là cả hai thuộc tính này đều là văn bản (textPropertyOptions), một thuộc tính duy nhất bằng cách sử dụng toán tử tìm kiếm plot sẽ truy xuất cả hai.

Ngoài operatorName, các thuộc tính có thể sắp xếp có thể có Các trường lessThanOperatorNamegreaterThanOperatorName trong operatorOptions. Người dùng có thể sử dụng các tuỳ chọn này để tạo truy vấn dựa trên thông tin so sánh với giá trị đã gửi.

Cuối cùng, textOperatorOptions có trường exactMatchWithOperator trong operatorOptions. Nếu bạn đặt exactMatchWithOperator thành true, thì chuỗi truy vấn phải khớp với toàn bộ giá trị thuộc tính chứ không chỉ đơn thuần tìm thấy trong văn bản. Giá trị văn bản được coi là một giá trị nguyên tử trong các lượt tìm kiếm toán tử và khớp thuộc tính.

Ví dụ: hãy cân nhắc lập chỉ mục các đối tượng Sách hoặc Phim có thuộc tính thể loại. Các thể loại có thể bao gồm "Khoa học viễn tưởng", "Khoa học" và "Hư cấu". Bằng exactMatchWithOperator được đặt thành false hoặc được bỏ qua, tìm kiếm một thể loại hoặc chọn "Khoa học" hoặc "Hư cấu" thuộc tính này cũng sẽ trả về kết quả cho " Science-Fiction" dưới dạng văn bản được mã hoá kỹ thuật số "Khoa học" và "Hư cấu" có trong "Khoa học-giả tưởng". Khi exactMatchWithOperatortrue, văn bản được coi là một mã thông báo, nên cả hai đều không "Khoa học" cũng như "Hư cấu" khớp với " Science-Fiction".

(Không bắt buộc) Thêm phần displayOptions

Có phần displayOptions không bắt buộc ở cuối Mục propertyDefinition. Phần này chứa một chuỗi displayLabel. displayLabel là một nhãn văn bản nên dùng, thân thiện với người dùng cho cơ sở lưu trú. Nếu thuộc tính được định cấu hình để hiển thị bằng ObjectDisplayOptions, thì nhãn này sẽ xuất hiện trước cơ sở lưu trú. Nếu tài sản đã được định cấu hình cho màn hình và displayLabel không được xác định, chỉ có giá trị thuộc tính là được hiển thị.

Đoạn mã sau đây cho thấy thuộc tính movieTitledisplayLabel được đặt thành 'Tiêu đề'.

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    "retrievalImportance": { "importance": "HIGHEST" },
    "operatorOptions": {
       "operatorName": "title"
    }
},
  "displayOptions": {
    "displayLabel": "Title"
  }
},

Sau đây là các giá trị displayLabel cho tất cả thuộc tính của movie trong giản đồ mẫu:

Thuộc tính displayLabel
movieTitle Title
releaseDate Release date
genre Genre
duration Run length
actorName Actor
userRating Audience score
mpaaRating MPAA rating

(Không bắt buộc) Thêm phần suggestionFilteringOperators[]

Có thuộc tính không bắt buộc suggestionFilteringOperators[] ở cuối phần propertyDefinition bất kỳ. Sử dụng phần này để xác định thuộc tính dùng để lọc các đề xuất tự động hoàn thành. Ví dụ: bạn có thể xác định toán tử của genre để lọc đề xuất dựa trên thể loại phim ưa thích. Sau đó, khi người dùng nhập cụm từ tìm kiếm, chỉ những cụm từ đó phim phù hợp với thể loại họ ưa thích được hiển thị trong phần tự động hoàn thành nội dung đề xuất.

Đăng ký giản đồ

Để nhận được dữ liệu có cấu trúc từ các truy vấn Cloud Search, bạn phải đăng ký giản đồ của bạn bằng dịch vụ giản đồ Cloud Search. Để đăng ký giản đồ, bạn cần mã nguồn dữ liệu mà bạn nhận được trong Khởi động một nguồn dữ liệu.

Sử dụng mã nguồn dữ liệu, tạo UpdateSchema yêu cầu đăng ký giản đồ của bạn.

Như đã trình bày chi tiết trên UpdateSchema trang tham khảo, phát hành yêu cầu HTTP sau đây để đăng ký giản đồ của bạn:

PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema

Nội dung yêu cầu của bạn phải có các thông tin sau:

{
  "validateOnly": // true or false,
  "schema": {
    // ... Your complete schema object ...
  }
}

Dùng lựa chọn validateOnly để kiểm tra tính hợp lệ của giản đồ mà không cần đăng ký tài khoản.

Lập chỉ mục dữ liệu

Sau khi bạn đăng ký giản đồ, hãy điền vào nguồn dữ liệu bằng cách sử dụng Chỉ mục cuộc gọi. Lập chỉ mục thường được thực hiện trong trình kết nối nội dung của bạn.

Khi sử dụng giản đồ phim, yêu cầu lập chỉ mục API REST cho một bộ phim sẽ sẽ có dạng như sau:

{
  "name": "datasource/<data_source_id>/items/titanic",
  "acl": {
    "readers": [
      {
        "gsuitePrincipal": {
          "gsuiteDomain": true
        }
      }
    ]
  },
  "metadata": {
    "title": "Titanic",
    "sourceRepositoryUrl": "http://www.imdb.com/title/tt2234155/?ref_=nv_sr_1",
    "objectType": "movie"
  },
  "structuredData": {
    "object": {
      "properties": [
        {
          "name": "movieTitle",
          "textValues": {
            "values": [
              "Titanic"
            ]
          }
        },
        {
          "name": "releaseDate",
          "dateValues": {
            "values": [
              {
                "year": 1997,
                "month": 12,
                "day": 19
              }
            ]
          }
        },
        {
          "name": "actorName",
          "textValues": {
            "values": [
              "Leonardo DiCaprio",
              "Kate Winslet",
              "Billy Zane"
            ]
          }
        },
        {
          "name": "genre",
          "enumValues": {
            "values": [
              "Drama",
              "Action"
            ]
          }
        },
        {
          "name": "userRating",
          "integerValues": {
            "values": [
              8
            ]
          }
        },
        {
          "name": "mpaaRating",
          "textValues": {
            "values": [
              "PG-13"
            ]
          }
        },
        {
          "name": "duration",
          "textValues": {
            "values": [
              "3 h 14 min"
            ]
          }
        }
      ]
    }
  },
  "content": {
    "inlineContent": "A seventeen-year-old aristocrat falls in love with a kind but poor artist aboard the luxurious, ill-fated R.M.S. Titanic.",
    "contentFormat": "TEXT"
  },
  "version": "01",
  "itemType": "CONTENT_ITEM"
}

Hãy lưu ý cách giá trị của movie trong trường objectType khớp với đối tượng tên định nghĩa trong giản đồ. Bằng cách khớp hai giá trị này, Cloud Search biết được đối tượng giản đồ nào cần sử dụng trong quá trình lập chỉ mục.

Ngoài ra, hãy lưu ý cách sử dụng quá trình lập chỉ mục của thuộc tính giản đồ releaseDate các thuộc tính phụ của year, monthday mà nó kế thừa vì nó được xác định là loại dữ liệu date bằng cách sử dụng datePropertyOptions để xác định. Tuy nhiên, vì year, monthday không được xác định trong giản đồ, bạn không thể truy vấn một trong các thuộc tính đó (ví dụ: year).

Ngoài ra, hãy lưu ý cách lập chỉ mục tài sản lặp lại actorName bằng cách sử dụng một danh sách giá trị.

Xác định các vấn đề tiềm ẩn khi lập chỉ mục

Hai vấn đề phổ biến nhất liên quan đến giản đồ và lập chỉ mục là:

  • Yêu cầu lập chỉ mục của bạn có chứa một đối tượng giản đồ hoặc tên thuộc tính không được đã đăng ký với dịch vụ schema. Vấn đề này khiến thuộc tính hoặc đối tượng bị bỏ qua.

  • Yêu cầu lập chỉ mục của bạn có thuộc tính có giá trị loại khác với loại đã đăng ký trong giản đồ. Sự cố này khiến Cloud Search trả về lỗi tại thời điểm lập chỉ mục.

Kiểm thử giản đồ bằng một số loại truy vấn

Trước khi đăng ký giản đồ cho một kho lưu trữ dữ liệu sản xuất lớn, hãy cân nhắc kiểm thử với một kho lưu trữ dữ liệu kiểm thử nhỏ hơn. Kiểm thử bằng kho lưu trữ kiểm thử nhỏ hơn này giúp bạn nhanh chóng điều chỉnh giản đồ, và xoá dữ liệu được lập chỉ mục mà không ảnh hưởng đến chỉ mục lớn hơn hoặc chỉ mục sản xuất hiện có. Đối với kho lưu trữ dữ liệu kiểm thử, hãy tạo ACL chỉ cấp quyền cho người dùng thử nghiệm để những người dùng khác sẽ không xem dữ liệu này trong kết quả tìm kiếm.

Để tạo giao diện tìm kiếm nhằm xác thực truy vấn tìm kiếm, hãy tham khảo Giao diện tìm kiếm

Phần này chứa một số truy vấn mẫu khác nhau mà bạn có thể sử dụng để kiểm tra một giản đồ phim.

Kiểm thử bằng truy vấn chung

Truy vấn chung trả về tất cả các mục trong nguồn dữ liệu có chứa một truy vấn cụ thể . Khi sử dụng giao diện tìm kiếm, bạn có thể chạy truy vấn chung cho một bộ phim nguồn dữ liệu bằng cách nhập từ "titanic" rồi nhấn vào Return. Tất cả phim có từ "titanic" cần được trả về trong kết quả tìm kiếm.

Kiểm thử với một toán tử

Việc thêm một toán tử vào truy vấn sẽ giới hạn kết quả ở những mục phù hợp với truy vấn đó giá trị toán tử. Ví dụ: bạn có thể sử dụng toán tử actor để tìm tất cả phim có sự tham gia của một diễn viên cụ thể. Khi sử dụng giao diện tìm kiếm, bạn có thể thực hiện truy vấn toán tử này chỉ bằng cách nhập một cặp operator=value, chẳng hạn như &quot;actor:Zane&quot; rồi nhấn &quot;actor:Zane&quot;. Tất cả phim có sự tham gia của Zane cần được trả về trong kết quả tìm kiếm.

Điều chỉnh giản đồ của bạn

Sau khi giản đồ và dữ liệu của bạn được sử dụng, hãy tiếp tục theo dõi xem những gì đang hoạt động và không hiệu quả đối với người dùng. Bạn nên cân nhắc điều chỉnh giản đồ trong các trường hợp sau:

  • Lập chỉ mục một trường chưa được lập chỉ mục trước đó. Ví dụ: người dùng của bạn có thể tìm kiếm nhiều lần các phim dựa trên tên đạo diễn, vì vậy bạn có thể điều chỉnh giản đồ của bạn để hỗ trợ tên giám đốc với vai trò là toán tử.
  • Thay đổi tên toán tử tìm kiếm dựa trên phản hồi của người dùng. Tên nhà cung cấp dịch vụ là thân thiện với người dùng. Nếu người dùng của bạn thường xuyên "nhớ" sai rồi tên toán tử, bạn có thể cân nhắc việc thay đổi tên đó.

Lập chỉ mục lại sau khi thay đổi giản đồ

Để thay đổi bất kỳ giá trị nào sau đây trong giản đồ, bạn không cần phải lập chỉ mục lại dữ liệu của bạn. Bạn chỉ cần gửi UpdateSchema yêu cầu và chỉ mục của bạn sẽ tiếp tục hoạt động:

  • Tên nhà cung cấp dịch vụ.
  • Giá trị tối thiểu và tối đa là số nguyên.
  • Thứ hạng theo thứ tự số nguyên và enum.
  • Tùy chọn về độ mới.
  • Tùy chọn hiển thị.

Đối với những thay đổi sau, dữ liệu đã lập chỉ mục trước đó sẽ tiếp tục hoạt động theo giản đồ đã đăng ký trước đó. Tuy nhiên, bạn phải lập chỉ mục lại các mục nhập hiện có để xem các thay đổi dựa trên giản đồ được cập nhật nếu có các thay đổi:

  • Thêm hoặc xoá thuộc tính hoặc đối tượng mới
  • Thay đổi isReturnable, isFacetable hoặc isSortable từ false thành true.

Bạn nên đặt isFacetable hoặc isSortable thành true chỉ nếu bạn có trường hợp sử dụng và nhu cầu rõ ràng.

Cuối cùng, khi cập nhật giản đồ bằng cách đánh dấu thuộc tính là isSuggestable, bạn phải lập chỉ mục lại dữ liệu của mình, việc này khiến việc sử dụng tính năng tự động hoàn thành bị chậm trễ tài sản đó.

Thay đổi thuộc tính không được phép

Một số thay đổi đối với giản đồ là không được chấp nhận, ngay cả khi bạn lập chỉ mục lại dữ liệu của mình, vì chúng sẽ làm hỏng chỉ mục hoặc tạo ra kết quả tìm kiếm kém chất lượng hoặc không nhất quán. Các bao gồm các thay đổi đối với:

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

Tuy nhiên, có cách khắc phục hạn chế này.

Thay đổi giản đồ phức tạp

Để tránh những thay đổi sẽ tạo ra kết quả tìm kiếm kém chất lượng hoặc tìm kiếm không chính xác Cloud Search ngăn chặn một số loại thay đổi nhất định trong UpdateSchema các yêu cầu sau khi kho lưu trữ đã được lập chỉ mục. Ví dụ: loại dữ liệu hoặc không thể thay đổi tên của thuộc tính sau khi chúng đã được đặt. Những thay đổi này không thể đạt được thông qua một UpdateSchema yêu cầu, ngay cả khi bạn lập chỉ mục lại dữ liệu của mình.

Trong trường hợp bạn phải thực hiện thay đổi không được phép đối với , bạn thường có thể thực hiện một loạt thay đổi được phép để đạt được cùng một hiệu ứng. Nhìn chung, trước tiên, quá trình này bao gồm di chuyển các tài sản được lập chỉ mục từ một định nghĩa đối tượng cũ sang một đối tượng mới hơn rồi gửi yêu cầu lập chỉ mục chỉ sử dụng thuộc tính mới hơn.

Các bước sau đây cho biết cách thay đổi loại dữ liệu hoặc tên của một tài sản:

  1. Thêm một thuộc tính mới vào phần định nghĩa đối tượng trong giản đồ. Sử dụng một tên của tài sản mà bạn muốn thay đổi.
  2. Phát hành UpdateSchema yêu cầu theo định nghĩa mới. Hãy nhớ gửi toàn bộ giản đồ, bao gồm cả tài sản mới và tài sản cũ trong yêu cầu.
  3. Bổ sung chỉ mục từ kho lưu trữ dữ liệu. Để bổ sung vào chỉ mục, hãy gửi tất cả yêu cầu lập chỉ mục bằng cách sử dụng thuộc tính mới, nhưng không phải vì điều này sẽ dẫn đến việc tính hai lần kết quả trùng khớp với truy vấn.

    1. Trong quá trình lập chỉ mục thay thế, hãy kiểm tra tài sản mới và đặt mặc định thành tài sản cũ để tránh hoạt động không nhất quán.
    2. Sau khi quá trình chèn lấp hoàn tất, hãy chạy truy vấn kiểm tra để xác minh.
  4. Xoá tài sản cũ. Tạo vấn đề khác UpdateSchema yêu cầu mà không có tên tài sản cũ và ngừng sử dụng tài sản cũ tên trong các yêu cầu lập chỉ mục trong tương lai.

  5. Di chuyển mọi hoạt động sử dụng tài sản cũ sang tài sản mới. Ví dụ: nếu bạn thay đổi tên tài sản từ người tạo thành tác giả, thì bạn phải cập nhật truy vấn của mình để sử dụng tác giả ở vị trí trước đó đã tham chiếu đến người tạo.

Cloud Search lưu giữ bản ghi của mọi thuộc tính hoặc đối tượng đã bị xóa trong 30 ngày để tránh việc sử dụng lại có thể dẫn đến kết quả lập chỉ mục không mong muốn. Trong vòng 30 ngày đó, bạn nên di chuyển khỏi tất cả việc sử dụng những đối tượng hoặc thuộc tính, bao gồm cả việc loại bỏ chúng khỏi các yêu cầu lập chỉ mục trong tương lai. Điều này đảm bảo rằng nếu sau đó bạn quyết định khôi phục tài sản đó hoặc , bạn có thể làm như vậy theo cách duy trì độ chính xác của chỉ mục.

Biết giới hạn về kích thước

Cloud Search đặt ra các giới hạn về kích thước của các đối tượng và giản đồ dữ liệu có cấu trúc. Các giới hạn này là:

  • Số lượng đối tượng cấp cao nhất tối đa là 10 đối tượng.
  • Độ sâu tối đa của hệ thống phân cấp dữ liệu có cấu trúc là 10 cấp.
  • Tổng số trường trong một đối tượng được giới hạn ở mức 1.000, bao gồm số trường gốc cộng với tổng số trong mỗi đối tượng được lồng.

Các bước tiếp theo

Dưới đây là một vài bước tiếp theo bạn có thể thực hiện:

  1. Tạo giao diện tìm kiếm để hãy kiểm tra giản đồ của bạn.

  2. Điều chỉnh giản đồ để cải thiện chất lượng tìm kiếm.

  3. Xây dựng một giản đồ để diễn giải truy vấn tối ưu.

  4. Tìm hiểu cách tận dụng Giản đồ _dictionaryEntry để xác định từ đồng nghĩa cho các cụm từ thường dùng trong công ty của bạn. Để sử dụng _dictionaryEntry giản đồ, tham chiếu đến Định nghĩa từ đồng nghĩa.

  5. Tạo trình kết nối.