web-dev-qa-db-ja.com

レビュースニペットのJSON-LDマークアップに重複が表示される

Googleの公式な例に従って、Googleの構造化データテストツールでレビューとテスト用のJSON-LDマークアップを作成しています。

同じ組織のレビューのリストを作成する場合(すべてのレビューは同じ組織に関するものです)、テストツールに重複が表示されます。

たとえば、同じThing(本)の2つのレビューはテストに合格しましたOK:

<script type="application/ld+json">
[{
  "@context": "http://schema.org/",
  "@type": "Review",
  "itemReviewed": {
    "@type": "Thing",
    "name": "Super Book"
  },
  "author": {
    "@type": "Person",
    "name": "Joe"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "8",
    "bestRating": "10"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Washington Times"
  }
},
{
  "@context": "http://schema.org/",
  "@type": "Review",
  "itemReviewed": {
    "@type": "Thing",
    "name": "Super Book"
  },
  "author": {
    "@type": "Person",
    "name": "Jane"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "7",
    "bestRating": "10"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Washington Times"
  }
}]
</script>

結果:Googleは、各レビューのブック名への単一参照を使用して、ブックの2つのレビューを正しく検出します。

今、私はThingOrganizationに変更しましたが、取得したのは混乱です。

<script type="application/ld+json">
[{
  "@context": "http://schema.org/",
  "@type": "Review",
  "itemReviewed": {
    "@type": "LocalBusiness",
    "@id": "www.some-url.com",
    "name": "Company Name"
  },
  "author": {
    "@type": "Person",
    "name": "Jack"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "5",
    "bestRating": "5"
  },
  "publisher": {
    "@type": "Organization",
    "@id": "www.some-url.com",
    "name": "Company Name"
  }
},
{
  "@context": "http://schema.org/",
  "@type": "Review",
  "itemReviewed": {
    "@type": "LocalBusiness",
    "@id": "www.some-url.com",
    "name": "Company Name"
  },
  "author": {
    "@type": "Person",
    "name": "Jane"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "4",
    "bestRating": "5"
  },
  "publisher": {
    "@type": "Organization",
    "@id": "www.some-url.com",
    "name": "Company Name"
  }
}
]
</script>

テストツールの出力には、組織名への複数の参照が表示されます。

2回のレビューで4回。 100件のレビューを追加すると、各レビューには何百もの組織への参照が含まれます。

なぜそんなに混乱しているのですか?これがコードに影響する場合、どのように修正しますか?

1
Alex V

今、私はThingOrganizationに変更します、[…]

これが唯一の変更ではありませんでした。 2番目の例には、会社に関するすべてのノードの@idも含まれています。

それは良い習慣です そのようなものを提供する ノード識別子 。あなたの場合、すべてのレビューは同じ会社に関するものであり、レビューされた会社は出版社でもあることがわかります。

関係のないhowGoogleのSDTTは、何か問題が表示されない限り、それを表示します。同じ値を持っている場合でも(通常はそうであるように)、同じ@idを持つすべてのノードのすべてのプロパティを表示するようです。これは単なる表示の問題であり、データに問題はありません。

代替:埋め込む代わりに参照

会社について何か言いたいときに毎回完全なノードを追加する必要のない方法があります:@idを使用して完全なノードを参照します。

これはスペースを節約するだけでなく、データの重複の問題を回避するだけでなく、SDTTの表示の問題も取り除きます。

この回答で 完全な例 を見つけることができます。

あなたの場合:

"@type": "LocalBusiness"を使用してトップレベルノードを追加し、組織の@idを指定して、関連するすべてのプロパティを提供します。

{
  "@context": "http://schema.org/",
  "@type": "LocalBusiness",
  "@id": "http://www.example.com/#organization",
  "name": "Company Name"
}

Reviewアイテムからこのノードを参照します。

"itemReviewed": {"@id": "http://www.example.com/#organization"}
"publisher": {"@id": "http://www.example.com/#organization"}
0
unor