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

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

Cách trình bày kết quả phụ thuộc vào độ tin cậy. Độ tin cậy tăng lên khi các chuỗi cụm từ tìm kiếm xuất hiện nhất quán trong các trường giản đồ cụ thể (ví dụ: "Tom Hanks" trong trường actors). Độ tin cậy giảm khi các chuỗi xuất hiện trong văn bản thông thường. Độ tin cậy cao chỉ hiển thị các kết quả được diễn giải, trong khi độ tin cậy thấp hơn sẽ kết hợp các kết quả đó với kết quả từ khoá tiêu chuẩn.

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

Hãy xem xét một 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à cách diễn giải cụm từ đó.

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

Đối với ví dụ này, cách diễn giải cụm từ tìm kiếm:

  • Xác định từ giản đồ rằng các đối tượng cấp cao nhất là objecttype:movies.
  • Quét tài liệu để xác định vị trí xuất hiện của từ "action". Nếu từ này chủ yếu xuất hiện trong trường genre, thì độ tin cậy sẽ tăng lên rằng đó là giá trị thuộc tính cho trường đó.

Cách diễn giải kết quả là: actor:"tom hanks" genre:action objecttype:movies

Tính năng diễn giải cụm từ tìm kiếm sẽ tự động diễn giải cho tất cả người dùng, nhưng bạn có thể tối ưu hoá tính năng này bằng cách cấu trúc giản đồ như mô tả trong các phần sau.

Cấu trúc giản đồ để diễn giải cụm từ tìm kiếm

Việc tối ưu hoá giản đồ sẽ đảm bảo bạn được hưởng lợi từ tính năng diễn giải cụm từ tìm kiếm.

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

Tính năng diễn giải cụm từ tìm kiếm sử dụng objectDefinitionspropertyDefinitions để diễn giải cụm từ tìm kiếm. Tạo tên hiển thị trực quan bằng cách sử dụng displayLabel cho các thuộc tính, objectDisplayLabel cho các đối tượng và operatorName cho các toán tử.

Ví dụ nà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,
      "textPropertyOptions": {
        "operatorOptions": { "operatorName": "genre" }
      },
      "displayOptions": { "displayLabel": "Category" }
    }]
  }]
}

Những tên hiển thị này cho phép diễn giải như:

  • "action movies" -> genre:action object:movies
  • "movies with genre action or thriller" -> objecttype:movies genre:(action OR thriller)
  • "comedy category movies" -> genre:comedy objecttype:movies

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

Xác định lessThanOperatorNamegreaterThanOperatorName trong IntegerOperatorOptions cho tất cả thuộc tính ngày và số. Để bật tính năng sắp xếp, hãy đặt isSortable.

Ví dụ này bật các lựa chọn sau:

{
  "objectDefinitions": [{
    "propertyDefinitions": [
      {
        "name": "runtime",
        "isSortable": true,
        "integerPropertyOptions": {
          "operatorOptions": {
            "operatorName": "runtime",
            "lessThanOperatorName": "runtimelessthan",
            "greaterThanOperatorName": "runtimegreaterthan"
          }
        }
      },
      {
        "name": "releasedate",
        "isSortable": true,
        "datePropertyOptions": {
          "operatorOptions": {
            "operatorName": "releasedate",
            "lessThanOperatorName": "releasedbefore",
            "greaterThanOperatorName": "releasedafter"
          }
        }
      }
    ]
  }]
}

Các chế độ cài đặt này cho phép diễn giải như:

  • "movies released this year" -> objecttype:movies releasedafter:2019-1-1 releasedbefore:2019-12-31
  • "movies with runtime less than 90" -> objecttype:movies runtimelessthan:90

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

Sử dụng các toán tử tích hợp như type, before, afterobjecttype:

  1. Điền updateTime vào ItemMetadata để sử dụng beforeafter.
  2. Điền mimeType vào ItemMetadata để tự động phát hiện. Ví dụ: "action videos" liệt kê các tài liệu có loại MIME video.

Các giới hạn đối với tính năng diễn giải cụm từ tìm kiếm

  • Chỉ hoạt động đối với các ACL nguồn dữ liệu sau:
    • Miền công khai.
    • Nguồn dữ liệu công khai.
    • Phần lớn tài liệu chia sẻ cùng một ACL kế thừa.
  • Tên toán tử được chia sẻ (ví dụ: priorityseverity đều sử dụng 0-3) làm giảm độ tin cậy.
  • Theo mặc định, tính năng diễn giải sử dụng chữ thường cho các giá trị trường, trừ phi bạn sử dụng exactMatchWithOperator.
  • Không hỗ trợ toán tử source.
  • Không diễn giải các toán tử kết hợp và cụm từ văn bản tự do (ví dụ: "p0 cases severity:s0").
  • Kết quả luôn được kết hợp với các kết quả được xếp hạng theo mức độ liên quan.