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

Tính năng diễn giải 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, sau đó chuyển đổi các phần tử đó thành truy vấn có cấu trúc dựa trên toán tử. Phần 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 cụm từ tìm kiếm 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 từ khoá tối thiểu, nhưng vẫn thu được kết quả chính xác.

Kết quả thực tế được hiển thị cho người dùng phụ thuộc vào mức độ tin cậy của diễn giải truy vấn. Độ tin cậy được dựa trên một số yếu tố, bao gồm cả vị trí 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ẽ có độ tin cậy cao hơn. Việc cùng một chuỗi ("Tom Hanks") xuất hiện trong một đoạn văn thay vì trường giản đồ có thể khiến độ tin cậy thấp hơn. Trong trường hợp có độ tin cậy cao, chỉ kết quả diễn giải cụm từ tìm kiếm mới hiển thị với người dùng. Trong trường hợp độ tin cậy yếu hơn, kết quả từ cách 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 theo từ khoá thông thường.

Ví dụ về diễn giải cụm từ tìm kiếm

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

Tổng quan về việc diễn giải cụm từ tìm kiếm
Hình 1. Diễn giải cụm từ tìm kiếm

Với truy vấn mẫu này, việc diễn giải truy vấn sẽ thực hiện như 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. Diễn giải truy vấn giờ đây 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 "hành động" xảy ra. Nếu chuỗi chủ yếu xảy ra 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 có độ tin cậy rằng "hành động" là một 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 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 được tự động bật cho tất cả khách hàng của Cloud Search mà không cần phải 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 đồ của mình theo hướng dẫn trong tài liệu này.

Cấu trúc giản đồ của bạn để hỗ trợ việc diễn giải truy vấn

Bạn nên cấu trúc 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ị

Cách diễn giải cụm từ tìm kiếm của Cloud Search sử dụng objectDefinitionspropertyDefinitions trong một giản đồ để diễn giải cụm từ tìm kiếm của người dùng và điều chỉnh kết quả. Để phát huy 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 của 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 là "Phim".

  • Thuộc tính thể loại định nghĩa có một operatorName "thể loại" và một "Danh mục" displayLabel.

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 thể loại hành động" hoặc "phim hành động thể loại" sẽ được hiểu là genre:action object:movies.
  • "phim thuộc thể loại hành động hoặc giật gân" được hiểu là objecttype:movies genre:(action OR thriller).
  • "phim hành động" hoặc "phim hành động" được hiểu là genre:action objecttype:movies.
  • “phim hài thuộc thể loại hài” được hiểu là genre:comedy objecttype:movies.

Cho phép 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ả các thuộc tính ngày và số. Các chế độ cài đặt này cho phép tự động diễn giải ngày và số. Ngoài ra, để bật tính năng diễn giải cách sắp xếp, hãy đặt tuỳ chọn isSortable cho các thuộc tính ngày và số. Giản đồ 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 cho biết thời điểm một bộ phim được phát hành tại rạp. releasedbeforereleasedafter được đặt cho thuộc tính này.

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

  • Giả sử năm là năm 2019, “phim phát hành năm nay” được hiểu 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” được hiểu là objecttype: movies releasedafter:2019-3-10 releasedbefore:2019-3-16
  • "phim có thời gian chạy dưới 90" được hiểu là objjecttype: movies runtimelessthan:90.
  • Giả sử năm là năm 2019, “các bộ phim phát hành trong năm nay và dài hơn 120 phút” được hiểu 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: phim" và kết quả trình bày sẽ được sắp xếp vào ngày phát hành với thứ tự sắp xếp mặc định là tăng dần.

Bật phần diễn giải toán tử dành riêng

Bạn cũng có thể sử dụng các toán tử tích hợp sẵn type, before, after, objecttype để cải thiện việc 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 sẵn trường updateTime trong ItemMetadata để sử dụng các toán tử beforeafter. Những chế độ cài đặt này cho phép Cloud Search thực hiện các diễn giải truy vấn sau:

    • "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 của 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 vào 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ả các tài liệu về 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 cụm từ tìm kiếm có một số hạn chế như sau.

  • Diễn giải truy vấn chỉ hoạt động cho các ACL nguồn dữ liệu sau đây:
    • Tất cả tài liệu đều công khai trong miền (mọi người trong miền đều có thể truy cập).
    • Tất cả các tài liệu đều công khai nguồn dữ liệu (mọi người có quyền truy cập vào Danh sách kiểm soát quyền truy cập (ACL) của nguồn dữ liệu).
    • Phần lớn các tài liệu trong nguồn dữ liệu đều có cùng ACL (tất cả các tài liệu kế thừa ACL từ cùng một mục vùng chứa) và 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 giá trị, thì việc diễn giải giá trị đó cho ý đị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ó cá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, việc diễn giải truy vấn của Cloud Search làm giảm trường hợp giá trị trườ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 các tuỳ chọn exactMatchWithOperator.
  • Truy vấn không hỗ trợ toán tử source.
  • Các truy vấn kết hợp các điều khoản dựa trên toán tử và điều khoản văn bản tự do sẽ không được diễn giải. Ví dụ: truy vấn "p0 Priority Cases: s0" sẽ không được hỗ trợ vì "trường hợp ưu tiên p0" là một thuật ngữ văn bản tự do trong khi "mức độ nghiêm trọng: s0" là thuật ngữ dựa trên toán tử.
  • Chiến lược diễn giải cụm từ tìm kiếm luôn kết hợp kết quả được diễn giải với kết quả thông thường (không được hiểu, được xếp hạng mức độ liên quan). Thao tác này sẽ không thay thế toàn bộ kết quả trên toàn trang.