Cấu trúc giản đồ cho diễn giải truy vấn tối ưu

Tính năng giải thích truy vấn của Cloud Search tự động diễn giải các toán tử và bộ lọc trong truy vấn của người dùng, đồng thời chuyển đổi các phần tử đó thành một truy vấn có cấu trúc, dựa trên toán tử. Tính năng diễn giải truy vấn sử dụng các toán tử được xác định trong giản đồ, cùng với các tài liệu được lập chỉ mục, để suy ra ý nghĩa của truy vấn của người dùng. Tính năng này cho phép người dùng tìm kiếm bằng một số từ khoá tối thiểu nhưng vẫn nhận được kết quả chính xác.

Kết quả thực tế được trình bày cho người dùng phụ thuộc vào mức độ tin cậy của việc diễn giải truy vấn. Mức độ tin cậy dựa trên một số yếu tố, bao gồm cả vị trí của chuỗi truy vấn xuất hiện trong các tài liệu được lập chỉ mục. Một chuỗi, chẳng hạn như tên của diễn viên "Tom Hanks", xuất hiện nhất quán trong trường giản đồ có tên là actors sẽ mang lại độ tin cậy cao hơn. Cùng một chuỗi "Tom Hanks" xuất hiện trong một đoạn văn bản thay vì trường giản đồ có thể dẫn đến độ tin cậy thấp hơn. Trong trường hợp có độ tin cậy cao, người dùng sẽ chỉ thấy kết quả từ việc diễn giải truy vấn. Trong trường hợp độ tin cậy thấp hơn, kết quả từ việc diễn giải cụm từ tìm kiếm sẽ được kết hợp với kết quả tìm kiếm từ khoá thông thường.

Ví dụ về cách diễn giải truy vấn

Giả sử bạn có một nguồn dữ liệu, chẳng hạn như cơ sở dữ liệu, chứa thông tin về phim. Hình 1 cho thấy một cụm từ tìm kiếm mẫu và kết quả diễn giải.

Tổng quan về việc diễn giải truy vấn
Hình 1. Diễn giải truy vấn

Với truy vấn mẫu này, hoạt động diễn giải truy vấn sẽ thực hiện những việc sau:

  • Phân tích cú pháp giản đồ và xác định rằng các đối tượng cấp cao nhất trong nguồn dữ liệu được phân loại là objecttype:movies. Giờ đây, tính năng diễn giải truy vấn đã biết rằng "phim" trong truy vấn là một loại đối tượng.

  • Quét các tài liệu trong nguồn dữ liệu, kết hợp với giản đồ, để xác định vị trí chuỗi "action" xuất hiện. Nếu chuỗi chủ yếu xuất hiện trong một trường nguồn dữ liệu "thể loại" cụ thể, thì việc diễn giải truy vấn sẽ có độ tin cậy rằng "hành động" là giá trị thuộc tính cho thuộc tính "thể loại" như được xác định trong giản đồ. Nếu chuỗi chủ yếu xuất hiện trong ngữ cảnh của các đoạn nội dung, thì mức độ tin cậy của việc diễn giải truy vấn sẽ giảm.

Nội dung diễn giải cụm từ tìm kiếm thu được là:

  actor:tom hanks genre:action objecttype:movies

Tính năng diễn giải truy vấn sẽ tự động bật cho tất cả khách hàng Cloud Search mà không cần làm gì thêm. Tuy nhiên, để diễn giải truy vấn một cách tối ưu, bạn nên cấu trúc giản đồ theo hướng dẫn trong tài liệu này.

Xây dựng giản đồ để hỗ trợ việc diễn giải truy vấn

Bạn nên thiết lập giản đồ để đảm bảo rằng bạn có thể hưởng lợi từ việc diễn giải truy vấn.

Bật tính năng diễn giải tên hiển thị

Tính năng diễn giải truy vấn của Cloud Search sử dụng objectDefinitionspropertyDefinitions trong giản đồ để diễn giải truy vấn của người dùng và điều chỉnh kết quả. Để khai thác tối đa lợi ích của các phần tử giản đồ này, bạn nên tạo tên hiển thị trực quan bằng cách sử dụng displayLabel cho tên thuộc tính, objectDisplayLabel cho tên đối tượng và operatorName cho toán tử.

Giản đồ sau đây cho thấy tên hiển thị trực quan cho một đối tượng phim:

{
  "objectDefinitions": [
    {
      "name": "movie",
        "options": {
          "displayOptions": {
          "objectDisplayLabel": "Films"
        }
        ...
      },
      "propertyDefinitions": [
        {
          "name": "genre",
          "isReturnable": true,
          "isRepeatable": true,
          "isFacetable": true,
          "textPropertyOptions": {
          "retrievalImportance": { "importance": "HIGHEST" },
          "operatorOptions": {
            "operatorName": "genre"
          }
        },
        "displayOptions": {
          "displayLabel": "Category"
        }
      },
      ...
      ]
    }
  ]
}

Trong ví dụ trước:

  • Định nghĩa đối tượng phim có objectDisplayLabel "Phim".

  • propertyDefinition của thể loại có một operatorName "genre" (thể loại) và một displayLabel "Category" (Danh mục).

Những tên hiển thị này cho phép Cloud Search diễn giải các truy vấn sau:

  • "phim hành động", "phim thuộc thể loại hành động" hoặc "phim hành động theo thể loại" được diễn giải là genre:action object:movies.
  • "phim thuộc thể loại hành động hoặc kinh dị" được diễn giải là objecttype:movies genre:(action OR thriller).
  • "phim hành động" hoặc "phim hành động" được diễn giải là genre:action objecttype:movies.
  • "phim thuộc danh mục hài" được diễn giải là genre:comedy objecttype:movies.

Bật tính năng diễn giải ngày, số và sắp xếp

Bạn nên xác định lessThanOperatorNamegreaterThanOperatorName, được chỉ định trong IntegerOperatorOptions, cho tất cả thuộc tính ngày và số. Các chế độ cài đặt này cho phép diễn giải số và ngày tự động. Ngoài ra, để bật tính năng diễn giải thứ tự, hãy đặt tuỳ chọn isSortable cho thuộc tính ngày và số. Sơ đồ sau đây cho biết cách bật các tuỳ chọn này.

{
  "objectDefinitions": [
    {
      "options": {
        "displayOptions": {
          "objectDisplayLabel": "Films"
        }
      },
      "propertyDefinitions": [
        {
          "name": "runtime",
          "isReturnable": true,
          "isSortable": true,
          "integerPropertyOptions": {
            "orderedRanking": "DESCENDING",
            "minimumValue": {
              "value": 10
            },
            "maximumValue": {
              "value": 500
            },
            "operatorOptions": {
              "operatorName": "runtime",
              "lessThanOperatorName": "runtimelessthan",
              "greaterThanOperatorName": "runtimegreaterthan"
            }
          },
          "displayOptions": {
            "displayLabel": "Length"
          }
        },
        {
          "name": "releasedate",
          "isReturnable": true,
          "isSortable": true,
          "datePropertyOptions": {
            "operatorOptions": {
              "operatorName": "releasedate",
              "lessThanOperatorName": "releasedbefore",
              "greaterThanOperatorName": "releasedafter"
            }
          }
        }
      ]
    }
  ]
}

Trong ví dụ trước:

  • Thuộc tính số runtime đề cập đến thời lượng của một bộ phim. runtimelessthanruntimegreaterthan được đặt cho thuộc tính này.
  • Thuộc tính ngày releaseDate đề cập đến thời điểm phát hành phim tại rạp. releasedbeforereleasedafter được đặt cho thuộc tính này.

Các chế độ cài đặt này cho phép Cloud Search diễn giải các cụm từ tìm kiếm sau:

  • Giả sử năm nay là năm 2019, thì "phim phát hành trong năm nay" được diễn giải là objecttype: movies releasedafter:2019-1-1 releasedbefore:2019-12-31.
  • Giả sử tuần này là tuần thứ ba của tháng 3, thì "phim phát hành tuần trước" sẽ được diễn giải là objecttype: movies releasedafter:2019-3-10 releasedbefore:2019-3-16
  • "phim có thời lượng dưới 90" được diễn giải là objjecttype: movies runtimelessthan:90.
  • Giả sử năm là 2019, "phim phát hành năm nay và có thời lượng hơn 120" được diễn giải là releasedafter:2019-1-1 releasedbefore:2019-12-31 objecttype:movies runtimegreaterthan:120.
  • "sắp xếp phim theo ngày phát hành" sẽ lọc theo "objecttype: movies" và kết quả được trình bày sẽ được sắp xếp theo ngày phát hành với thứ tự sắp xếp mặc định là tăng dần.

Bật tính năng diễn giải toán tử được đặt trước

Bạn cũng có thể sử dụng các toán tử tích hợp sẵn type, before, after, objecttype để tăng cường khả năng diễn giải truy vấn. Khi lập chỉ mục một tài liệu, hãy làm như sau:

  1. Điền trường updateTime trong ItemMetadata để sử dụng toán tử beforeafter. Các chế độ cài đặt này cho phép Cloud Search diễn giải các cụm từ tìm kiếm sau:

    • Cụm từ "phim từ tuần trước" sẽ liệt kê tất cả các phim được cập nhật trong chỉ mục vào tuần trước.
    • "phim trước tháng 1 năm 2019" sẽ liệt kê tất cả các phim được lập chỉ mục trước tháng 1 năm 2019.
  2. Điền trường mimeType trong ItemMetadata để sử dụng tính năng tự động phát hiện loại. Truy vấn "video hành động" sẽ liệt kê tất cả tài liệu phim hành động có loại mime là application/mp4, application/mpeg4, application/x-shockwave-flash, video/application/vnd.google-apps.video.

Giới hạn về việc diễn giải truy vấn

Tính năng diễn giải truy vấn có các giới hạn sau.

  • Tính năng diễn giải truy vấn chỉ hoạt động với các ACL nguồn dữ liệu sau:
    • Tất cả tài liệu đều ở chế độ công khai trong miền (mọi người trong miền đều có thể truy cập).
    • Tất cả tài liệu đều là nguồn dữ liệu công khai (mọi người đều có quyền truy cập vào ACL nguồn dữ liệu).
    • Phần lớn tài liệu trong nguồn dữ liệu có cùng ACL (tất cả tài liệu kế thừa ACL từ cùng một mục vùng chứa) mà không có trình đọc bổ sung nào được xác định.
  • Nếu nhiều toán tử giản đồ có cùng một giá trị, thì việc diễn giải giá trị đó thành ý định của toán tử cho một truy vấn sẽ phụ thuộc vào hệ số tin cậy tổng thể do hệ thống diễn giải truy vấn trả về. Ví dụ: giả sử bạn có các thuộc tính priorityseverity có cùng tên toán tử được xác định trong giản đồ. Giả sử cả hai toán tử đều có thể có giá trị 0, 1, 2 hoặc 3. Trong ví dụ này, "0" trong truy vấn có thể tham chiếu đến giá trị toán tử cho priority hoặc severity. Các giá trị này không rõ ràng và mức độ tin cậy thấp hơn.
  • Theo mặc định, tính năng diễn giải truy vấn của Cloud Search sẽ chuyển giá trị trường xuống chữ thường khi diễn giải truy vấn, ngoại trừ các toán tử văn bản được xác định bằng tuỳ chọn exactMatchWithOperator.
  • Toán tử source không được hỗ trợ trong truy vấn.
  • Các cụm từ tìm kiếm kết hợp các cụm từ dựa trên toán tử và cụm từ văn bản tự do sẽ không được diễn giải. Ví dụ: truy vấn "p0 priority cases severity:s0" sẽ không được hỗ trợ vì "p0 priority cases" là cụm từ văn bản tự do, còn "severity:s0" là cụm từ dựa trên toán tử.
  • Chiến lược diễn giải truy vấn luôn kết hợp các kết quả được diễn giải với kết quả thông thường (không được diễn giải, được xếp hạng theo mức độ liên quan). Phương thức này không thực hiện việc thay thế toàn bộ trang kết quả.