篩選及排序搜尋結果

總覽

為協助使用者前往您網站上的正確網頁,程式化搜尋引擎提供結構化搜尋運算子,可讓您根據在網頁中找到的結構化資料或與網站圖片相關的中繼資料,細查搜尋結果子集。

進行圖片搜尋時,Google 會使用網頁的結構化資料,以及檢索網站時找到的圖片中繼資料。建議所有網站管理員熟悉我們的圖片發布指南

  1. 網頁搜尋
  2. 圖片搜尋
  3. 程式化搜尋元素中的結構化搜尋

網頁搜尋

與文字不同的是文字序列,結構化資料是按邏輯方式組織成具有一組屬性的物件組合。程式化搜尋引擎會擷取各種結構化資料,供結構化搜尋運算子使用,包括日期、作者、評分和價格;這也是可在自訂程式碼片段中使用的相同資料。此外,程式化搜尋引擎也支援下列任一格式的結構化資料:

  • PageMap:PageMap 明確表示結構化資料為含有屬性和值的 DataObjects,並以內嵌在網頁中的 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:pagemap:document-author:lisamorton 限制,程式化搜尋引擎可使用 more: 運算子進行修正標籤,而分類標籤的 pagemap: 部分可讓我們根據已建立索引的 PageMaps 中的特定屬性,以及運算子的其餘元素 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 的 DataObject,其屬性名稱為 author。這個結構化資料索引鍵後面接有 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>

如要擷取「愛爾蘭與小說」這項查詢的結果,請使用下列指令:

more:p:document-keywords:irish*fiction

這相當於 more:pagemap:document-keywords:Irish more:pagemap:document-keywords:fiction

如要擷取「愛爾蘭 AND (虛構或恐怖)」的搜尋結果,請使用下列指令:

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

返回頁首

依分支版本篩選

「依分支版本篩選」依屬性篩選的變化版本,適用於 JSON-LD、微格式和 RDFa。在 JSON-LD 結構化資料中,這是「唯一」依屬性進行篩選的類型。

如果結構化資料不含樹狀結構,或只包含不含子項的樹狀結構,則限制與依屬性篩選設定相同。但是,擁有子項的樹狀結構會限制包含下列內容的:從根層級到分葉節點的每個節點的 type-name,因此樹狀結構:

  • 根類型為「事件」
  • 一個孩子將命名為 rating
  • 該子項的類型為 AggregateRating
  • 子項屬性的名稱為 ratingCount,值為 22
系統會產生限制:more:pagemap:event-rating-aggregaterating-ratingcount:22 (結尾為評分計數的分支版本) 。

搭配使用依屬性或分支版本與其他功能篩選

您可以運用這個開放式語法,細查網站上的文件在 PageMaps 中指定的內容;您也可以將這項語法用於 Google 支援的幾乎所有其他類型的結構化資料,但不包括預估頁面日期。您也可以使用這些 more:pagemap: 運算子搭配 修正標籤 隱藏的查詢元素,根據應用程式重視的屬性篩選結果,這樣使用者就不必直接輸入這些限制限定詞。

您也可以省略搜尋運算子的某些部分。在上述範例中,請注意,PageMap 指定 document 類型的 DataObject,以及 author 類型的屬性。但網站上的每個網頁都不是文件,且並非所有文件都有作者資訊。如果您使用 more:pagemap:document-author 形式的運算子,則無論其值為何,傳回的結果都會包含 document DataObject 中含有 author 屬性的所有網頁,無論其值為何。同樣地,無論該 DataObject 有哪些欄位,more:pagemap:document 都會傳回 PageMaps 具有 DataObjects 類型 document 的所有結果。

將文字值權杖化以限制

包含空格、標點符號或特殊字元的屬性值幾乎一律會分割成不同的符記。舉例來說,「Programmable Search Engine@google」的屬性值會分成三個不同的符記:「custom」、「search」和「google」。這樣做可允許搜尋嵌入在較大字詞序列和標點符號中的單一字詞,例如製作說明。(程式化搜尋引擎會擷取每個字串最多 10 個符記,因此如果屬性值包含超過 10 個字詞,可能無法用來限制結果)。舉例來說,以下 PageMap 包含程式化搜尋引擎製作說明:

<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]

權杖化文字值的其他規則:

  • 為了限制,系統會將文字值轉換為小寫
  • 如為長度不超過六個符記的字串,系統會為整個字串產生額外限制,並以 _ 取代空格,例如 please_attend
  • 系統不會針對停止字詞 (例如「the」、「a」、「但」和「因此」這類字詞) 產生個別限制。因此,文字值「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]

權杖化的例外狀況,是網址屬性值的情況。由於網址中的符記具有有限實用性,因此我們不會從有效網址的屬性值產生任何符記。

在某些情況下 (例如經常同時找到簡短符記時),程式化搜尋引擎可能會合併這些符記以建立超級符記。例如,如果「總統」和「歐巴馬」這些符記經常並排顯示,則程式化搜尋引擎可能會建立超級符記「pident_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」的屬性,請使用以下限制:

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

根據正斜線彙整時,只有在正斜線之間無空格的數字之間,才能進行彙整;斜線與數字之間的空格將產生不同的符記。此外,以斜線連接的數字必須完全相符;「Filter by Attribute」運算子不會將這些值解讀為分數或日期。程式化搜尋引擎的其他結構化搜尋運算子 (例如依屬性排序限制為範圍) 會將這些數字解讀為分數和日期,詳情請參閱「提供結構化資料」說明文件。

返回頁首

JSON-LD 的限制

JSON-LD 是功能強大的標準格式,適用於結構化資料。 資料會採用 JSON 格式,並放在 <script> 標記中,並以 type="application/ld+json" 表示。

以下是採用簡單 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 樹狀結構的根層級含有分葉節點和子項,結果限制的格式與屬性限制相同。上例中的部分限制是來自根目錄的分葉節點,並採用屬性限制 (類型名稱-值) 的格式,例如: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

系統從引擎中排序的結果,取決於這些網頁在其 PageMaps 中對該 DataObject 和 Attribute 的值。如果網頁缺少 PageMap、該屬性的可剖析值或該屬性的可剖析值,網頁就不會以硬式編碼的方式顯示。在上述範例中,沒有 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

針對「Restrict to Range」運算子,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 會在另一個分頁中顯示圖片搜尋結果。你可以使用程式化搜尋引擎控制台或更新 content.xml 檔案,藉此啟用圖片搜尋功能。

「圖片搜尋」會使用 Google 在檢索你的網站時找到的資訊。如要改善圖片在搜尋結果中的顯示方式 (程式化搜尋引擎和 Google 網頁搜尋中的顯示方式),建議您詳閱 Google 的圖片發布指南

依圖片屬性篩選

圖片搜尋與網頁搜尋一樣,支援篩選 srcalttitle 等屬性。

返回頁首

程式化搜尋元素中的結構化搜尋

結構化搜尋功能也可以和 Google 程式化搜尋元素搭配使用。就像在查詢或網址參數中表示的運算子一樣,在元素中進行結構化搜尋時,必須先為要搜尋的網頁加上要搜尋的屬性標記;接著,程式化搜尋元素的 sort 運算子搭配 more:pagemap: 運算子,就會正確排序或限制搜尋結果。

舉例來說,加州新聞入口網站 SignOnSanDiego.com 會使用 Programmable Search Element 算繪近期的報導,以及搜尋結果中的相片:

為確保讀者不僅看到最相關、及即時的新聞,SignOnSanDiego 使用「自訂調整」屬性,將「偏誤」的權重視為最近的出版日期。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」,請在 Programmable Search Element 的搜尋程式碼中設定 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:20100907r 範圍。與網址參數一樣,您可以在程式化搜尋元素的 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>
...

此方法相對缺乏彈性,因為該方法會對從這個控制項發出的所有查詢加上限制。如要查看其他選項,請參閱 Programmable Search Element 的說明文件。

返回頁首

探索其他功能

結構化搜尋功能是一組功能強大的選項,可讓您充分控管搜尋應用程式,因此您可以使用自訂屬性,以對使用者最有效的方式排序及限制搜尋結果。網站簡介也適用於其他程式化搜尋引擎功能,例如自訂搜尋結果摘要。如需更多資訊: