我的电子商务产品页面上同时包含Micro Data和JSON-LD,描述了同样的事情(在我的案例中是产品)。由于超出此问题范围的原因,我无法删除这两种格式中的任何一种。我在想:
这对Google来说是个问题吗?结构化数据测试工具确实显示两个项目(产品)而不是一个。
如果一个属性(比如产品的名称)在两种格式之间略有不同,那么两种格式中的任何一种,例如JSON-LD是否优先?
答案 0 :(得分:11)
问题在于消费者会认为不同的事物被描述(或更准确地说:消费者不会知道事物是否相同)。
有一种方法可以阻止这个¹:give each thing a URI,如果事情相同,那就是相同的URI。
可以使用JSON-LD中的@id
和微数据中的itemid
来完成此操作。
所以一个简单的案例可能是:
<!-- markup on the product page,
so the fragment "#this" results in an absolute URI like
"http://example.com/products/foo#this" -->
<!-- JSON-LD -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Product",
"@id": "#this",
"name": "Foo"
}
</script>
<!-- Microdata -->
<article itemscope itemtype="http://schema.org/Product" itemid="#this">
<h1 itemprop="name">Foo</h1>
</article>
如果像name
这样的属性具有不同的值,那么消费者可以处理这个问题的显而易见的方法就是给这个东西多个名字。对于消费者只需要一个名称(例如,在富结果中)的特征,没有定义将使用哪个name
值。如果消费者是搜索引擎,它可能会使用其现有的专有算法来处理此类情况。
¹当然,目前尚不清楚各种消费者是否支持它。但这是正确的方法,这是唯一明确的方法。隐含的方式包括希望消费者理解通常(但不一定)唯一属性的相同值(例如url
,email
,productID
等)意味着事物是相同。但是这种隐含的方式当然可以与明确的方式一起使用。