Dữ liệu có cấu trúc Hộp tìm kiếm cho đường liên kết của trang web (WebSite)

Hộp tìm kiếm cho đường liên kết của trang web giúp người dùng nhanh chóng tìm kiếm thông tin có trong trang web hoặc ứng dụng của bạn ngay trên trang kết quả tìm kiếm. Hộp tìm kiếm gợi ý nội dung tìm kiếm theo thời gian thực và cung cấp các tính năng khác.

Google Tìm kiếm có thể tự động hiển thị hộp tìm kiếm trong phạm vi trang web của bạn khi trang web xuất hiện trong kết quả tìm kiếm mà không yêu cầu bạn phải làm gì thêm. Hộp tìm kiếm này do Google Tìm kiếm cung cấp. Tuy nhiên, bạn có thể cung cấp thông tin rõ ràng bằng cách thêm dữ liệu có cấu trúc WebSite. Qua đó, Google có thể hiểu rõ hơn về trang web của bạn.

Nếu Google Tìm kiếm đã hiển thị một hộp tìm kiếm cho trang web của bạn, thì bạn có thể thêm dữ liệu có cấu trúc WebSite để kiểm soát một số phương diện liên quan đến hộp tìm kiếm cho đường liên kết của trang web đó.

Cách triển khai hộp tìm kiếm cho đường liên kết của trang web

Dưới đây là các bước để làm cho trang web của bạn đủ điều kiện xuất hiện kèm theo hộp tìm kiếm trong kết quả của Google Tìm kiếm:

  1. Cài đặt một công cụ tìm kiếm hoạt động trên trang web hoặc ứng dụng Android của bạn.

    Khi nhập cụm từ tìm kiếm vào hộp tìm kiếm cho đường liên kết của trang web, người dùng sẽ được đưa đến trang kết quả tìm kiếm về trang web hoặc ứng dụng của bạn. Vì vậy, bạn cần một công cụ tìm kiếm hoạt động để cung cấp tính năng này.

    • Trang web: Thiết lập một công cụ tìm kiếm trên trang web của bạn. Tính năng này sẽ chuyển tiếp cụm từ tìm kiếm của người dùng đến đích tìm kiếm của bạn bằng cú pháp được chỉ định trong dữ liệu có cấu trúc. Công cụ tìm kiếm của bạn phải hỗ trợ các cụm từ tìm kiếm được mã hoá bằng UTF-8.
    • Ứng dụng: Hãy xem phần Tổng quan về Tìm kiếm trên Trang web dành cho nhà phát triển Android để tìm hiểu cách triển khai một công cụ tìm kiếm cho ứng dụng của bạn. Ứng dụng Android của bạn phải hỗ trợ ý định ACTION_VIEW qua kết quả Tìm kiếm, đồng thời có URI dữ liệu tương ứng được chỉ định trong thuộc tính potentialAction.target của mã đánh dấu của bạn.
  2. Triển khai phần tử dữ liệu có cấu trúc WebSite trên trang chủ cho trang web của bạn. Một ứng dụng phải có một trang web liên kết để kích hoạt tính năng này, ngay cả khi trang web chỉ có một trang duy nhất. Một số nguyên tắc bổ sung:
    • Chỉ thêm mã đánh dấu này vào trang chủ, chứ không phải trang nào khác.
    • Nếu bạn đã triển khai dữ liệu có cấu trúc WebSite cho tính năng tên trang web, hãy nhớ lồng các thuộc tính tên trang web trong cùng một nút. Nói cách khác, nếu có thể thì nên tránh tạo thêm một khối dữ liệu có cấu trúc WebSite trên trang chủ.
    • Luôn chỉ định một thuộc tính SearchAction cho trang web, và một thuộc tính khác không bắt buộc nếu bạn hỗ trợ chức năng tìm kiếm trong ứng dụng. Bạn phải cung cấp thuộc tính SearchAction cho trang web ngay cả khi bạn muốn chuyển người dùng đến ứng dụng của bạn khi nhấp vào kết quả tìm kiếm. Việc này giúp đảm bảo rằng nếu người dùng không tìm kiếm trên điện thoại Android hoặc chưa cài đặt ứng dụng Android của bạn, thì kết quả tìm kiếm sẽ đưa người dùng đến trang web của bạn.
    • Tùy theo định dạng bạn đang sử dụng, hãy tìm hiểu nơi chèn dữ liệu có cấu trúc trên trang.
  3. Làm theo các nguyên tắc.
  4. Xác thực mã của bạn bằng công cụ Kiểm tra kết quả nhiều định dạng.
  5. Xác minh kết quả triển khai công cụ tìm kiếm của bạn bằng cách sao chép URL WebSite.potentialAction.target từ dữ liệu có cấu trúc, thay thế {search_term_string} bằng một cụm từ tìm kiếm thử nghiệm và duyệt đến URL đó trong một trình duyệt web. Ví dụ: nếu trang web của bạn là example.com và bạn muốn kiểm tra cụm từ tìm kiếm "kittens", hãy duyệt đến https://www.example.com/search/?q=kittens.
  6. Đặt URL chính tắc mà bạn muốn sử dụng cho trang chủ của miền bằng cách sử dụng yếu tố liên kết rel="canonical" trên tất cả biến thể của trang chủ. Điều này giúp Google Tìm kiếm chọn đúng URL cho mã đánh dấu của bạn. Máy chủ của bạn phải hỗ trợ loại mã hóa ký tự UTF-8.
  7. Đối với ứng dụng, hãy bật các bộ lọc ý định phù hợp để hỗ trợ URL mà bạn chỉ định trong ứng dụng đích của mã đánh dấu. Để xem ví dụ về cách tạo bộ lọc ý định cho URL trong Google Tìm kiếm, hãy xem phần Lập chỉ mục ứng dụng Firebase cho Android.
  8. Triển khai một vài trang có chứa dữ liệu có cấu trúc rồi dùng Công cụ kiểm tra URL để kiểm tra xem Google nhìn thấy trang đó như thế nào. Hãy đảm bảo rằng Google có thể truy cập trang của bạn và bạn không chặn trang bằng yêu cầu đăng nhập, thẻ noindex hoặc tệp robots.txt. Nếu có vẻ như trang không gặp vấn đề nào, bạn có thể yêu cầu Google thu thập lại dữ liệu các URL của mình.
  9. Để thông báo cho Google về những thay đổi sau này, bạn nên gửi một sơ đồ trang web. Bạn có thể tự động hoá quy trình này bằng cách sử dụng API Sơ đồ trang web của Search Console.

Ví dụ

Sau đây là một kết quả tìm kiếm ví dụ cho "Pinterest" trên Google, trong đó có trả về hộp tìm kiếm cho đường liên kết của trang web dành cho Pinterest:

Hình minh hoạ hộp tìm kiếm cho đường liên kết của trang web

Dưới đây là một số mã đánh dấu ví dụ để triển khai hộp tìm kiếm cho đường liên kết của trang web bằng công cụ tìm kiếm tuỳ chỉnh của trang web:

JSON-LD

Dưới đây là một ví dụ trong JSON-LD:


<html>
  <head>
    <title>The title of the page</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "WebSite",
      "url": "https://www.example.com/",
      "potentialAction": {
        "@type": "SearchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://query.example.com/search?q={search_term_string}"
        },
        "query-input": "required name=search_term_string"
      }
    }
    </script>
  </head>
  <body>
  </body>
</html>
Vi dữ liệu

Dưới đây là một ví dụ trong Vi dữ liệu:


<div itemscope itemtype="https://schema.org/WebSite">
  <meta itemprop="url" content="https://www.example.com/"/>
  <form itemprop="potentialAction" itemscope itemtype="https://schema.org/SearchAction">
    <meta itemprop="target" content="https://query.example.com/search?q={search_term_string}"/>
    <input itemprop="query-input" type="text" name="search_term_string" required/>
    <input type="submit"/>
  </form>
</div>
  

Dưới đây là một ví dụ về trang web và ứng dụng trong JSON-LD:

<html>
  <head>
    <title>The title of the page</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "WebSite",
      "url": "https://www.example.com/",
      "potentialAction": [{
        "@type": "SearchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://query.example.com/search?q={search_term_string}"
        },
        "query-input": "required name=search_term_string"
      },{
        "@type": "SearchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "android-app://com.example/https/query.example.com/search/?q={search_term_string}"
        },
        "query-input": "required name=search_term_string"
      }]
    }
    </script>
  </head>
  <body>
  </body>
</html>

Nguyên tắc

Bạn phải tuân theo các nguyên tắc này để trang web của bạn đủ điều kiện xuất hiện dưới dạng kết quả nhiều định dạng.

Google Tìm kiếm có thể quyết định đặt một hộp tìm kiếm cho đường liên kết của trang web vào kết quả cho trang web của bạn ngay cả khi trang web không chứa dữ liệu có cấu trúc mà chúng tôi mô tả ở đây. Tuy nhiên, bạn có thể ngăn hành vi này bằng cách thêm thẻ meta sau đây vào trang chủ của mình:

<meta name="google" content="nositelinkssearchbox">

Định nghĩa các loại dữ liệu có cấu trúc

Để nội dung của bạn đủ điều kiện xuất hiện kèm theo hộp tìm kiếm cho đường liên kết của trang web, hãy sử dụng các thuộc tính bắt buộc.

Loại WebSite đã sửa đổi

Google Tìm kiếm sử dụng loại dữ liệu có cấu trúc WebSite đã sửa đổi cho cả hộp tìm kiếm trang web và ứng dụng. Định nghĩa đầy đủ về dữ liệu có cấu trúc WebSite có trên schema.org, mặc dù loại dữ liệu mà Google Tìm kiếm sử dụng hơi khác một chút so với định nghĩa chuẩn. Sau đây là các thuộc tính được Google hỗ trợ:

Thuộc tính bắt buộc
potentialAction

Một chuỗi gồm một hoặc hai đối tượng SearchAction

Đối tượng này chỉ định URI sẽ nhận truy vấn và cú pháp của yêu cầu được gửi. Bạn phải triển khai một trang web hoặc trình xử lý ý định có thể tiếp nhận yêu cầu và thực hiện hoạt động tìm kiếm phù hợp dựa trên chuỗi đã gửi. Nếu người dùng không sử dụng ứng dụng Android (hoặc sử dụng ứng dụng Android nhưng chưa chỉ định đích xử lý ý định trên Android), hộp tìm kiếm sẽ gửi phiên bản truy vấn dành cho trang web đến vị trí được chỉ định. Nếu người dùng sử dụng thiết bị Android và đã chỉ định URI tiếp nhận ý định trên Android, thì hộp tìm kiếm sẽ gửi ý định đó.

Bạn phải tạo một SearchAction trên trang web để kích hoạt chức năng tìm kiếm trên máy tính. Nếu hỗ trợ cả chức năng tìm kiếm trong ứng dụng, bạn có thể chỉ định thêm một đối tượng SearchAction cho ứng dụng. Mọi đối tượng SearchAction đều phải chứa những thuộc tính được lồng như sau:

Ví dụ về trang web

Ví dụ sau đây sẽ gửi yêu cầu GET tới https://query.example.com/search?q=user%20search%20string.

"potentialAction": [{
  "@type": "SearchAction",
  "target": {
    "@type": "EntryPoint",
    "urlTemplate": "https://query.example.com/search?q={search_term_string}"
  },
  "query-input": "required name=search_term_string"
}]

Ví dụ về ứng dụng

Ví dụ sau đây sẽ gửi ý định Android tới android-app://com.example/https/query.example.com/search/?q=user_search_string.

"potentialAction": [{
  "@type": "SearchAction",
  "target": {
    "@type": "EntryPoint",
    "urlTemplate": "android-app://com.example/https/query.example.com/search/?q={search_term_string}"
  },
  "query-input": "required name=search_term_string"
}]

potentialAction.query-input

Text

Dùng chuỗi giá trị cố định required name = search-term hoặc bất kỳ phần giữ chỗ nào bạn đã sử dụng trong target. Hãy đảm bảo rằng cả hai giá trị phần giữ chỗ này đều khớp. Ví dụ: cả hai giá trị phần giữ chỗ trong thuộc tính targetquery-input đều sử dụng chuỗi search-term:

"potentialAction": [{
  "@type": "SearchAction",
  "target": {
    "@type": "EntryPoint",
    "urlTemplate": "https://query.example.com/search?q={search-term}"
  },
  "query-input": "required name=search-term"
}]
potentialAction.target

EntryPoint

Đối tượng EntryPoint có một thuộc tính urlTemplate.

urlTemplate phải là một chuỗi có định dạng sau: search_handler_uri{search_term_string}

Ví dụ:

https://query.example.com/search?q={search_term_string}
search_handler_uri Đối với các trang web, đây là URL của trình xử lý sẽ nhận và xử lý cụm từ tìm kiếm. Đối với các ứng dụng, đây là URI của trình xử lý ý định cho công cụ tìm kiếm của bạn và sẽ đảm nhiệm việc xử lý các cụm từ tìm kiếm.
search_term_string

Chuỗi phần giữ chỗ sẽ được thay thế bằng cụm từ tìm kiếm của người dùng khi người dùng nhấp vào nút "Tìm kiếm" trong hộp tìm kiếm. Hãy đảm bảo rằng mọi chuỗi trình giữ chỗ bạn sử dụng ở đây đều khớp với giá trị của phần tử name cho thuộc tính query-input.

url

URL

Chỉ định URL của trang web mà bạn đang tìm kiếm. Hãy đặt URL này thành trang chủ chính tắc của trang web của bạn. Ví dụ: https://www.example.org

Theo dõi kết quả nhiều định dạng bằng Search Console

Search Console là công cụ giúp bạn theo dõi hiệu quả hoạt động của các trang web trong Google Tìm kiếm. Bạn không cần đăng ký sử dụng Search Console để đưa trang web vào Google Tìm kiếm, nhưng việc làm vậy có thể giúp bạn hiểu và cải thiện cách Google nhìn thấy trang web của bạn. Bạn nên kiểm tra Search Console trong những trường hợp sau:

  1. Sau lần đầu triển khai dữ liệu có cấu trúc
  2. Sau khi phát hành mẫu mới hoặc cập nhật mã của bạn
  3. Phân tích lưu lượng truy cập định kỳ

Sau lần đầu triển khai dữ liệu có cấu trúc

Sau khi Google lập chỉ mục các trang của bạn, hãy tìm vấn đề bằng cách sử dụng Báo cáo trạng thái kết quả nhiều định dạng có liên quan. Lý tưởng nhất là số mục hợp lệ tăng lên và số mục không hợp lệ không tăng. Nếu bạn tìm thấy vấn đề trong dữ liệu có cấu trúc:

  1. Sửa các mục không hợp lệ.
  2. Kiểm tra URL đang hoạt động để xem vấn đề còn tồn tại không.
  3. Yêu cầu xác thực bằng cách sử dụng báo cáo trạng thái.

Sau khi phát hành các mẫu mới hoặc cập nhật mã

Khi bạn thực hiện những thay đổi đáng kể trên trang web của mình, hãy theo dõi xem số lượng mục dữ liệu có cấu trúc không hợp lệ có tăng lên hay không.
  • Nếu bạn thấy số mục không hợp lệ gia tăng, thì có lẽ bạn đã triển khai một mẫu mới không hoạt động được hoặc trang web của bạn tương tác với mẫu hiện có theo cách mới và không hợp lệ.
  • Nếu bạn thấy số mục hợp lệ giảm (nhưng số mục không hợp lệ không tăng), thì có thể bạn không còn nhúng dữ liệu có cấu trúc trên các trang của mình nữa. Hãy sử dụng Công cụ kiểm tra URL để tìm hiểu nguyên nhân gây ra vấn đề.

Phân tích lưu lượng truy cập định kỳ

Phân tích lưu lượng truy cập bạn nhận được qua Google Tìm kiếm bằng cách sử dụng Báo cáo hiệu suất. Dữ liệu báo cáo sẽ cho bạn biết bạn tần suất trang web xuất hiện dưới dạng kết quả nhiều định dạng trong Tìm kiếm, tần suất người dùng nhấp vào trang và vị trí trung bình của trang trong kết quả tìm kiếm. Bạn cũng có thể tự động lấy các kết quả này bằng Search Console API.

Khắc phục sự cố

Nếu gặp sự cố khi triển khai hoặc gỡ lỗi dữ liệu có cấu trúc, thì bạn có thể tham khảo một số tài nguyên trợ giúp sau đây.