对搜索结果进行过滤和排序

概览

为帮助用户找到您网站上的正确网页,可编程搜索引擎提供了结构化搜索运算符,让您能够根据在网页中找到的结构化数据或与您网站上的图片相关联的元数据,深入查看搜索结果的子集。

对于图片搜索,Google 既依赖网页中的结构化数据,也依赖在抓取您的网站时发现的图片元数据。我们建议所有网站站长熟悉我们的图片发布指南

  1. 网页搜索
  2. 图片搜索
  3. 可编程搜索元素中的结构化搜索

网页搜索

与自由形式字词序列的文本不同,结构化数据在逻辑上被整理成一组具有一组属性的对象。可编程搜索引擎会提取日期、作者、评分和价格等各种结构化数据,以供结构化搜索运算符使用;这些数据与可用于自定义摘要的数据相同。此外,可编程搜索引擎支持以下任意格式的结构化数据:

  • PageMap:PageMap 会将结构化数据明确表示为具有属性和值的 DataObject,并将其编码为嵌入到网页的 XML 块。可编程搜索引擎让结构化搜索运算符能够提供所有格式正确的 PageMap 数据,还可以用在自定义摘要中。
  • meta 标记:Google 从 <meta name="NAME" content="VALUE"> 形式的 meta 标记中提取所选内容。<meta name="pubdate" content="20100101"> 形式的 meta 标记可与格式为 &sort=metatags-pubdate 的搜索运算符搭配使用。
  • 网页日期:Google 会根据网址、标题、署名日期和其他功能来估算网页的日期。此日期可以与采用特殊结构化数据类型 date 的排序运算符一起使用,如 &sort=date
  • 富媒体搜索结果数据:Google 还会从如下公共标准中提取一部分数据: ,以便在可编程搜索引擎的结构化数据运算符中使用。 例如,要根据评分对使用微格式 hrecipe 标准进行标记的网页进行排序,请使用 &sort=recipe-ratingstars

详细了解如何提供结构化数据

如果您的网页包含结构化数据,您随后可以应用可编程搜索引擎的结构化搜索运算符,将搜索范围限定为包含特定数据值的字段、按数值严格排序、偏向于特定值而不对它们进行排序,甚至限定为给定数值范围。

可编程搜索引擎支持对结构化数据使用以下搜索运算符:

返回页首

按属性过滤

通过按属性过滤,您可以选择三种结果:

  • 带有特定 DataObject 的结果,例如评价
  • 具有包含给定字段的 DataObject 的结果,例如具有价格范围的评价。
  • 具有特定字段值的结果,例如 5 星评价。

如需按特性进行过滤,请在搜索查询中添加 more:pagemap:TYPE-NAME:VALUE 运算符。这会将搜索结果限制为具有与该类型、名称和值完全匹配的结构化数据的网页。(可编程搜索引擎每页最多可转换 200 个属性,从页面映射数据开始,然后是 JSON-LD、微格式、元标记、RDFa 和微数据)。属性长度不应超过 128 个字符。您可以泛化此运算符,方法是省略 VALUE 以匹配命名字段的所有实例,或省略 -NAME:VALUE 以匹配给定类型的所有对象。

要了解如何通过结构化数据构建完整的运算符,请回顾我们之前使用的示例:

[halloween more:pagemap:document-author:lisamorton]

more: 运算符用于更详细地分解 more:pagemap:document-author:lisamorton 限制,可编程搜索引擎使用 more: 运算符来优化标签,优化的 pagemap: 部分指示我们按已编入索引的 PageMap 中的特定属性优化结果,运算符的其余元素 document-authorlisamorton 用于指定限制深入分析的内容。回想一下示例中的 PageMap:

<PageMap>
  <DataObject type="document">
    <Attribute name="title">The Five Scariest Traditional Halloween Stories</Attribute>
    <Attribute name="author">lisamorton</Attribute>
  </DataObject>
</PageMap>

运算符的 document-author: 限定符指示我们查找类型为 document 且属性名为 author 的 DataObject。此结构化数据键后跟值 lisamorton,该值必须与要在包含此限制的搜索中返回的属性的值完全匹配。

more:p:document-author:lisamorton

按属性过滤时,您可以使用紧凑查询创建更复杂的过滤条件(以及更短的命令)。例如,您可以为网址添加以下 PageMap:

    <pagemap>
      <DataObject type="document">
        <Attribute name="keywords">horror</Attribute>
        <Attribute name="keywords">fiction</Attribute>
        <Attribute name="keywords">Irish</Attribute>
      </DataObject>
    </pagemap>
  </page>

如需检索“Irish AND fiction”查询的结果,请使用以下命令:

more:p:document-keywords:irish*fiction

效果等同于 more:pagemap:document-keywords:Irish more:pagemap:document-keywords:fiction

如需检索“Irish AND (fiction OR horror)”的结果,请使用以下命令:

more:p:document-keywords:irish*fiction,irish*horror

返回页首

按分支过滤

“按分支过滤”是“按属性过滤”的变体,适用于 JSON-LD、微格式和 RDFa。这是唯一适用于 JSON-LD 结构化数据的按属性进行过滤的类型

如果结构化数据不包含树,或仅包含没有子级的树,则限制与按属性过滤时相同。 不过,包含子节点的树存在一些限制,其中包含从根节点到叶节点的每个节点的 type-name,因此树中,其中:

  • 根是 Event 类型
  • 儿童被命名为 rating
  • 该子项的类型为 AggregateRating
  • 子级有一个属性,其名称为 ratingCount,值为 22
将针对以评分计数结尾的分支生成以下限制:more:pagemap:event-rating-aggregaterating-ratingcount:22

使用“按属性过滤”或“按其他功能过滤”

您可以使用此开放式语法深入研究您网站上文档的 PageMap 中指定的内容;也可以对 Google 支持的几乎所有其他类型的结构化数据(但不包括估计的网页日期)使用相同的语法。您还可以将这些 more:pagemap: 运算符与 优化标签 隐藏查询元素一起使用,按对您的应用重要的属性过滤结果,这样最终用户就不必直接输入这些限制限定符。

您还可以省略搜索运算符的某些部分。请注意,在上面的示例中,PageMap 指定了 document 类型的 DataObject 和一个 author 类型的属性。但并非网站上的每个网页都是文档,也并非所有文档都有署名作者。如果您使用 more:pagemap:document-author 形式的运算符,则返回的结果将包括 document DataObject 中具有 author 属性的所有页面(无论属性的值是什么)。同样,无论该 DataObject 上具有哪些字段,more:pagemap:document 都将返回具有类型为 document 的 DataObject 的所有结果。

对限制的文本值进行词元化处理

包含空格、标点符号或特殊字符的属性值几乎总是拆分为单独的令牌;例如,“Programmable Search Engine@google”的属性值会拆分为三个单独的令牌,即“custom”“search”和“google”。这允许搜索嵌入在更大的字词和标点符号序列(例如生产说明)中的单个字词。(可编程搜索引擎会为每个字符串最多提取 10 个令牌,因此,如果您的属性值包含的单词超过 10 个,则并非所有单词都可用于限制结果。)例如,以下 PageMap 包含 Programmable Search Engine 的生产说明:

<PageMap>
  <DataObject type="product">
    <Attribute name="description">Programmable Search Engine provides customized search engines</Attribute>
  </DataObject>
</PageMap>

以下限制可查找具有关于“search”的 product-description 属性的所有网页:

[more:pagemap:product-description:search]

更多用于标记文本值的规则如下:

  • 对于限制,文本值将转换为小写
  • 对于长度不超过 6 个令牌的字符串,系统会针对整个字符串生成额外的限制,将空格替换为 _,例如 please_attend
  • 系统不会为停用词thea 等字词因此对搜索用处不大)生成单独的限制。因此,文本值“the main point”会生成 mainpointthe_main_point 的限制,但不会为 the 生成限制。
  • 只有文本值中的前十个字词用于构成限制。
  • 不被视为分隔符的标点字符会转换为下划线 _

使用多个限制深入分析标记化的值

如需更深入地展开细目,您可以添加其他限制;例如,要仅获取描述搜索引擎产品的网页,请添加以下限制:

[more:pagemap:product-description:search more:pagemap:product-description:engine]

more:pagemap: 限制的顺序并不重要;令牌将从属性值中提取到无序集。

默认情况下,系统会使用 AND 合并这些限制;不过,您也可以使用 OR 运算符将它们合并,以获取与任一限制都匹配的结果。例如,以下搜索会匹配与搜索或游戏相关的内容:

[more:pagemap:product-description:search OR more:pagemap:product-description:game]

令牌化的一个例外情况是网址的属性值。由于来自网址的令牌具有边际用途,因此我们不会从有效网址的属性值中生成任何令牌。

在某些情况下(例如,经常一起找到短令牌时,可编程搜索引擎可能会将它们组合起来以创建超级令牌)。例如,如果令牌“总统”和“奥巴马”经常彼此相邻,可编程搜索引擎可能会创建超级令牌“pography_obama”。因此,[more:pagemap:leaders-name:president_obama] 将返回与 [more:pagemap:leaders-name:president AND more:pagemap:leaders-name:obama] 相同的结果。

基于标点符号的标记化的另一个主要例外情况是将正斜线“/”用于分隔数字。“NUMBER/NUMBER”或“NUMBER/NUMBER/NUMBER”形式的属性值会被视为单个连续令牌;例如,“3.5/5.0”和“09/23/2006”会被视为单个令牌。例如,要搜索值为“2006/09/23”的 Attribute,请使用以下限制:

[more:pagemap:birth-date:2006/09/23]

仅当正斜杠位于没有空格的数字之间时,基于斜杠的联接才有效;斜杠和数字之间的空格会导致创建单独的令牌。此外,以斜杠连接的数字必须完全匹配;“按属性过滤”运算符不会将这些值解释为分数或日期。可编程搜索引擎的其他结构化搜索运算符(例如按属性排序限制范围)会将这些数字解释为分数和日期;如需了解详情,请参阅关于提供结构化数据的文档。

返回页首

限制使用 JSON-LD

JSON-LD 是一种功能强大的标准结构化数据格式。 数据采用 JSON 格式,并放置在带有 type="application/ld+json"<script> 标记中。

以下是包含一些简单的 JSON-LD 的少量 HTML 代码:

<script type="application/ld+json">
      {
        "@id": "http://event.example.com/events/presenting-foo",
        "@type": "http://schema.org/AggregateRating",
        "http://schema.org/ratingCount": "22",
        "http://schema.org/ratingValue": "4.4",
        "http://schema.org/itemReviewed": {
          "@type": "http://schema.org/Event",
          "http://schema.org/description": "Please attend.",
          "http://schema.org/name": "Presenting Foo",
          "http://schema.org/startdate": "2022-05-24",
          "http://schema.org/location": "Back room"
        }
      }
</script>

这会带来以下限制

  • more:pagemap:aggregaterating-ratingcount:22
  • more:pagemap:aggregaterating-ratingvalue:4.4
  • more:pagemap:aggregaterating-itemreviewed-event-description:please_attend
  • more:pagemap:aggregaterating-itemreviewed-event-description:please
  • more:pagemap:aggregaterating-itemreviewed-event-description:attend
  • more:pagemap:aggregaterating-itemreviewed-event-name:presenting_foo
  • more:pagemap:aggregaterating-itemreviewed-event-name:presenting
  • more:pagemap:aggregaterating-itemreviewed-event-name:foo
  • more:pagemap:aggregaterating-itemreviewed-event-startdate:2022-05-24
  • more:pagemap:aggregaterating-itemreviewed-event-location:back_room
  • more:pagemap:aggregaterating-itemreviewed-event-location:back
  • more:pagemap:aggregaterating-itemreviewed-event-location:room

对于 JSON-LD,我们仅针对从根开始的整个路径生成限制,请参阅按分支过滤。 不过,JSON-LD 树的根具有叶节点作为子项,生成的限制与属性限制的形式相同。上例中的部分限制由根处的叶节点组成,并采用属性限制的 (type-name-value) 形式,例如:more:pagemap:aggregaterating-ratingcount:22

注意:其他结构化数据格式允许长度不超过 128 字节的字符串,但对于 JSON-LD,所有字符串都会被截断为约 50 个字符,避免将字符串放在单词中间。根据字词长度,从字符串生成的词元数可能会比该限制更严格(上限为 10 个词元)。

返回页首

按属性排序

有时,将搜索限制为特定类型的结果是不够的;例如,在搜索餐厅评价时,您可能希望评分最高的餐厅显示在列表顶部。您可以使用可编程搜索引擎的按属性排序功能实现此目的,该功能根据结构化数据属性的值更改结果的顺序。通过向可编程搜索引擎的请求网址添加 &sort=TYPE-NAME:DIRECTION 网址参数来启用排序。与结构化搜索一样,按属性排序也取决于网页上的结构化数据;不过,与结构化搜索不同,排序需要相应字段具有数字和日期等数值解释。

在最简单的形式中,您可以根据 PageMap 中的数据对象类型和属性名称来指定结构化数据类型,并将其作为 &sort=TYPE-NAME 添加到请求网址中。例如,如需在页面上按日期排序,并以 date 类型表示其数据,并命名为 sdate,请使用以下语法:

https://www.google.com/cse?cx=000525776413497593842:aooj-2z_jjm&q=comic+con&sort=date-sdate

默认情况下,这会按降序执行硬性排序,即搜索结果严格按日期排序,最近的日期(即数字最大的)排在最前面。如果要将排序顺序更改为升序,请在该字段附加 :a(或附加 :d 以明确指定降序)。例如,如需首先显示最早的结果,您可以使用以下形式的限制:

https://www.google.com/cse?cx=000525776413497593842:aooj-2z_jjm&q=comic+con&sort=date-sdate:a

系统会根据网页在其 PageMap 中针对该 DataObject 和 Attribute 的值显示引擎中的排序结果。缺少 PageMaps、该 DataObject 类型或该属性的可解析值的网页不会以硬性排序显示。在上面的示例中,没有 date-sdate 属性的页面不会显示在结果中。硬排序不能与下一部分中所述的“按属性自定义调整”功能结合使用,但可以与按属性过滤限定范围结合使用。

返回页首

按属性自定义调整

有时,您并不想排除没有值的结果;例如,您想要搜索黎巴嫩美食;可能匹配各种不同的餐厅,从纯黎巴嫩(相关性最高)到希腊(相关性最低)的餐厅全都包括在内。在这种情况下,您可以使用强偏差或弱偏差,它们会强力或弱化提升具有您值的结果,但不会排除缺少该值的结果。您可以通过在排序方向后附加第二个值来指定强偏差或弱偏差:&sort=TYPE-NAME:DIRECTION:STRENGTH:s 表示强偏差,:w 表示弱偏差(:h 表示硬排序,但添加 :h 是可选的,因为它是默认设置)。例如,添加强烈偏差可确保评分最高的地中海餐厅会优于评分最低的地中海餐厅,但也不太可能会超过完全匹配的黎巴嫩餐厅:

https://www.google.com/cse?cx=12345:example&q=lebanese+restaurant&sort=review-rating:d:s

可以使用逗号运算符组合多个偏差:

https://www.google.com/cse?cx=12345:example&q=lebanese+restaurant&sort=review-rating:d:s,review-pricerange:d:w

偏差的顺序无关紧要。但是,硬排序不能与任何其他排序结合,因为它强制执行严格的排序。您在列表中指定的最后一个排序运算符将覆盖所有先前的排序和偏差运算符。

返回页首

限定范围

如需包含某个值范围之间(或者大于或小于某个值)的结果,请使用范围限制。范围限制由附加到属性名称的 :r 指定,后跟属性值的上限和下限:&sort=TYPE-NAME:r:LOWER:UPPER。例如,要仅包含 2009 年 3 月至 4 月期间撰写的评价,您可以指定以下范围限制:

https://www.google.com/cse?cx=12345:example&q=lebanese+restaurant&sort=review-date:r:20090301:20090430

对于“限制范围”运算符,Google 支持浮点数格式的数字和 ISO 8601 YYYYMMDD 格式的日期(不带短划线)。

您无需指定上限或下限:例如,若要仅指定 2009 年之前的日期,您可以这样编写:

https://www.google.com/cse?cx=12345:example&q=lebanese+restaurant&sort=review-date:r::20091231

要仅包含 3 星以上的评分,请使用以下代码:

https://www.google.com/cse?cx=12345:example&q=lebanese+restaurant&sort=rating-stars:r:3.0

范围包含边界值,可以通过英文逗号运算符相互结合,也可以与一种排序、一个或多个偏差条件结合使用。请注意,将范围限制与排序和偏差条件相结合,仅会导致对具有该范围内值的项进行排序。例如,要仅按三星或更多星评分对项目进行排序,请使用以下代码:

https://www.google.com/cse?cx=12345:example&q=lebanese+restaurant&sort=rating-stars,rating-stars:r:3.0

您可以对一个条件进行排序,然后根据另一个条件进行限制。 例如,要仅按评分在 10 月份评价的项目进行排序,请使用以下代码:

https://www.google.com/cse?cx=12345:example&q=lebanese+restaurant&sort=rating-stars,review-date:r:20101001:20101031

图片搜索

当您为搜索引擎启用图片搜索后,Google 将在单独的标签页中显示图片搜索结果。您可以使用可编程搜索引擎控制面板或更新 context.xml 文件来启用图片搜索。

图片搜索依赖于 Google 在抓取您的网站时发现的信息。如需改进您的图片在搜索结果中(包括在可编程搜索引擎和 Google 网页搜索中)的显示方式,建议您熟悉 Google 的图片发布指南

按图片属性过滤

与网页搜索一样,图片搜索搜索支持按 srcalttitle 等属性进行过滤。

返回页首

可编程搜索元素中的结构化搜索

结构化搜索功能还可与 Google 可编程搜索元素结合使用。与查询或网址参数中表示的运算符一样,元素中的结构化搜索首先要求您使用要搜索的属性标记搜索的网页;然后,在查询中,结合使用可编程搜索元素的 sort 运算符和 more:pagemap: 运算符,即可对搜索结果进行相应排序或限制。

例如,加利福尼亚州的一家新闻门户网站 SignOnSanDiego.com 使用可编程搜索元素来呈现带有照片的近期报道:

为了确保读者不仅看到最相关的新闻,还能看到及时的新闻,SignOnSanDiego 使用 Bias by Attribute(按属性分类),并对近期发布日期具有“强烈”权重。SignOnSanDiego 通过 PageMaps 实现这些日期属性;SignOnSanDiego 所用的一个属性如下所示:

<!--
  <PageMap>
    <DataObject type="date">
      <Attribute name="displaydate" value="Wednesday, August 25, 2010"/>
      <Attribute name="sdate" value="20100825"/>
    </DataObject>

    <DataObject type="thumbnail">
      <Attribute name="src" value="http://media.signonsandiego.com/img/photos/2010/08/25/635a63e9-f4a1-45aa-835a-ebee666b82e0news.ap.org_t100.jpg"/>
      <Attribute name="width" value="100"/>
    </DataObject>
  </PageMap>
  -->

如需对此字段应用“Sort by Attribute”(按属性排序),请在可编程搜索元素的搜索代码中设置 sort 选项,如下所示:

...
<div class="gcse-search" sort_by="date-sdate:d:s"></div>
...

与上述网址 &sort= 参数一样,可编程搜索元素 <div class="gcse-search" sort_by="date-sdate:d:s"></div> 中的排序选项接受组合属性名称(如 date-sdate)和几个以英文冒号分隔的可选参数。在本例中,SignOnSanDiego 使用运算符的强偏差 s 风格指定按 d 降序排序。如果您未提供限定符,则默认使用降序和硬排序,就像在网址运算符情况下一样。

排序选项还可启用“按范围限制”功能。例如,SignOnSanDiego 之类的网站可能允许用户搜索 2010 年 8 月 25 日至 9 月 9 日期间发布的文章。如需实现这一点,您可以将排序选项设置为 date-sdate:r:20100825:20100907。这再次使用组合属性名称 date-sdate,但会限制为指定值 20100825:20100907 的范围 r。与网址参数一样,您可以在可编程搜索元素的 sort 选项中省略范围的上限或下限项。

排序选项的另一个强大功能是,您可以结合使用“按属性排序”和“按范围限制”。您可以使用英文逗号分隔排序选项中的多个运算符。例如,若要将 SignOnSanDiego 的强烈偏差与上述日期限制相结合,您可以指定 date-sdate:d:s,date-sdate:r:20100825:20100907。此功能可以组合不同的属性;例如,电影评论网站可能会使用 review-rating,release-date:r:20100907: 选项显示过去一周内上映评分最高的电影。

如需了解所有受支持的属性,请参阅此页面

您还可以将“按属性过滤”与可编程搜索元素结合使用。以我们前面的示例为例,其中的网页包含 linked-blog 属性;要创建一个自定义搜索控件,使其仅返回链接的网页,请使用以下代码将 more:pagemap:linked-blog:blogspot 运算符注入每个查询:

...
<div class="gcse-search" webSearchQueryAddition="more:pagemap:linked-blog:blogspot"></div>
...

此方法相对不够灵活,因为它对从该控件发出的所有查询添加了限制。如需查看其他选项,请参阅有关可编程搜索元素的文档。

返回页首

探索其他功能

结构化搜索功能是一组功能强大的选项,可让您对搜索应用进行大量控制,并允许您使用自定义属性以非常有效的方式对用户进行排序和限制搜索结果。结构化搜索还可以与其他可编程搜索引擎功能(例如自定义结果摘要)完美配合使用。更多信息: