總覽
為了協助使用者前往網站上的正確網頁,Programmable Search Engine 提供結構化的搜尋運算子,可讓您根據網頁中找到的結構化資料或與網站圖片相關聯的中繼資料,細查搜尋結果子集。
對於圖片搜尋,Google 會同時參考網頁上的結構化資料,以及系統在檢索網站時找到的圖片中繼資料。建議所有網站管理員熟悉圖片發布指南。
搜尋網路
文字與任意形式的字詞序列不同,結構化資料在邏輯上會以一組屬性集合成一組物件。Programmable Search Engine 會擷取各種結構化資料元素供結構化搜尋運算子使用,包括日期、作者、評分和價格等;這與自訂程式碼片段中可用的資料相同。此外,Programmable Search Engine 支援採用下列任一格式的結構化資料:
- PageMap:PageMap 以結構化資料的方式,將結構化資料明確標示為 DataObjects,並以 XML 區塊的形式嵌入網頁。Programmable Search Engine 可以為結構化的搜尋運算子提供所有格式完整的 PageMap 資料,也可以用於自訂程式碼片段。
meta
標記:Google 會從<meta name="NAME" content="VALUE">
格式的meta
標記中擷取選取內容。格式為<meta name="pubdate" content="20100101">
的meta
標記可與&sort=metatags-pubdate
格式的搜尋運算子搭配使用。- 網頁日期:Google 會根據網址、標題、署名日期和其他功能,估算網頁的日期。這個日期可以與特殊結構化資料類型
date
搭配使用排序運算子,就像&sort=date
一樣。 - 複合式摘要資料:Google 也會從公開標準中擷取部分資料,例如:
,在 Programmable Search Engine' 的結構化資料運算子中使用。
舉例來說,如要依據微格式
hrecipe
標準標記的頁面排序評分,請使用&sort=recipe-ratingstars
。
如果您的網頁包含結構化資料,您就能套用可程式搜尋引擎,以將搜尋運算子限制至包含特定資料值的欄位,也可以嚴格篩選數值、偏向特定值 (而非排序) 的值,甚至限縮特定的值值範圍。
Programmable Search Engine 支援透過結構化資料使用以下搜尋運算子:
- 依屬性篩選:適用於所有 JSON 結構化資料格式 (JSON-LD 除外)。
- 依樹狀分支篩選 (適用於 JSON-LD、微格式和 RDFa)
- 按屬性排序
- Bias (按屬性區分)
- 限制範圍
依屬性篩選
按照屬性篩選,即可選取三種結果:
- 含有特定附加 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:
分類標籤則能協助我們根據已編入索引的 PageMap 的特定屬性,以及運算子的其餘元素 (document-author
和 lisamorton
) 來指定限制範圍縮小的內容。從範例呼叫 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 lite」的查詢內容,請使用下列指令:
more:p:document-keywords:irish*fiction
這相當於 more:pagemap:document-keywords:Irish more:pagemap:document-keywords:fiction
。
如要擷取「Irish AND」(小說或恐怖) 的結果,請使用下列指令:
more:p:document-keywords:irish*fiction,irish*horror
依分支版本篩選
依分支篩選是依屬性篩選的變化版本,可用於 JSON-LD、微格式和 RDFa。這是 JSON-LD 結構化資料所「只」按屬性篩選的類型。
如果結構化資料不含樹狀結構,或只包含不含子項的樹狀結構,則相關限制與屬性篩選條件相同。不過,包含子項的樹狀結構具有以下限制:包含從根層級到分葉節點的每個節點的 type-name,因此樹狀結構如下:
- 根類型為「事件」類型
- 子項名為 rating
- 該子項的類型為 AggregateRating
- 子項具有名為 ratingCount 和值為 22 的屬性。
按屬性或分支功能使用其他功能篩選
您可以使用這個開放式語法,細查網站上的文件中 PageMaps 指定的內容;您也可以使用同樣的語法,搭配 Google 支援的幾乎所有其他類型的結構化資料 (不包含預估網頁日期)。您也可以使用這些 more:pagemap:
運算子搭配修正標籤或隱藏的查詢元素,按照對應用程式而言重要屬性篩選結果,讓使用者不必直接輸入這些限制限定詞。
您也可以省略搜尋運算子的部分內容。在上述範例中,請注意 PageMap 指定了 document
類型的 DataObject 和 author
類型的屬性。不過,網站上的所有網頁都不是文件文件,而且並非所有文件都有作者作者。如果使用 more:pagemap:document-author
格式的運算子,則傳回的結果會包含 document
DataObject 中具有 author
屬性的所有網頁,無論屬性的值為何。同樣地,無論 DataObject 中的欄位為何,more:pagemap:document
都會傳回含有 PageObject 為 DataObject 的 PageMap 的所有結果。
限製文字的文字值
包含空格、標點符號或特殊字元的屬性值幾乎都會分割成不同的符記;舉例來說,「Programmable Search Engine@google」的屬性值會分成三個不同的權杖,分別是「自訂」、「搜尋」和「Google」。因此,這會允許嵌入含有更多字詞和標點符號的單字,例如製片說明。(程式化搜尋引擎每個字串最多會擷取 10 個符記,因此如果屬性值含有超過 10 個字詞,則可能無法限制結果。) 例如,以下 PageMap 包含 Programmable Search Engine 的生產說明:
<PageMap> <DataObject type="product"> <Attribute name="description">Programmable Search Engine provides customized search engines</Attribute> </DataObject> </PageMap>
以下限制會找出所有具備 product-description
屬性與「搜尋」屬性相符的網頁:
[more:pagemap:product-description:search]
將文字值權杖化的其他規則:
- 系統會將文字值轉換為小寫
- 如果是字串長度不超過 6 個的字串,系統會為整個字串產生額外的限制,並將
_
替換為空白,例如please_attend
。 - 對於「停止字詞」、「the」、「a」、「and」和「因此」等字詞,則不會產生個別的限制,因為搜尋範圍較小。因此,文字值:「" main point」」會產生 main、point 和 the_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]
權杖化的例外狀況是適用於網址的屬性值。由於網址的權杖有邊緣實用性,因此系統不會從有效網址的屬性值產生任何權杖。
在某些情況下 (例如經常同時找到短權杖),可程式化搜尋引擎可能會合併這些權杖來建立超權杖。舉例來說,如果權杖是「總統」和「Obama」,則經常在彼此旁邊顯示「程式化搜尋引擎」;因此,[more:pagemap:leaders-name:president_obama]
會傳回與 [more:pagemap:leaders-name:president AND more:pagemap:leaders-name:obama]
相同的結果。
根據標點符號進行權杖化的另一個主要例外狀況,就是以正斜線和 #39;/' 分隔數字。以 'NUMBER/NUMBER' 或 'NUMBER/NUMBER/NUMBER' 形式的屬性值都會視為單一連續權杖,例如 '3.5/5.0' 和 ##9;09/23/2006' 會被視為單一權杖。舉例來說,如要搜尋值為「##9922006/09/23'」的屬性,請使用相關限制:
[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:welcome_attend
- more:pagemap:aggregaterating-itemreviewed-event-description:城市
- 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 個字元,讓您不必在字詞中結束字串。視字詞長度而定,這可能會限制從字串產生的符記數量超過限制的十個權杖數量。
依屬性排序
在某些情況下,搜尋範圍仍不侷限於特定類型的搜尋結果。舉例來說,您可能在搜尋餐廳評論時,就可以看到評分最高的餐廳顯示在清單頂端。如要達成此目標,您可以使用程式化搜尋引擎的排序功能,依據結構化資料屬性值的值變更結果的順序。
透過將 &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 中的該資料物件和屬性的值來顯示排序已排序的結果。缺少 PageMap 時,該 DataObject 類型或該屬性的可剖析值將不會出現在硬式排序中。在上述範例中,沒有 date-sdate
屬性的網頁不會顯示在結果中。硬式排序無法與下一節所述的偏誤屬性功能搭配使用,但可與依屬性篩選和限制範圍合併使用。
偏誤 (依屬性)
有時候,您不想排除沒有值的結果,例如搜尋黎巴嫩料理。從「開展的黎巴嫩」(最相關) 到希臘 (最不相關) 的各種搜尋字詞,可能會有不同的餐廳。在這種情況下,您可以使用強式或微弱偏誤,來強力或弱地宣傳含有該值的結果,但不會排除缺少此值的結果。您可以在排序方向後方加上第二個值,藉此指定高強度或弱偏差:
&sort=TYPE-NAME:DIRECTION:STRENGTH
為高偏誤,或 :s
代表微弱偏誤,但 :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 Scope」運算子,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 網頁搜尋),建議您熟悉 Google 的圖片發布指南。
依圖片屬性篩選
與網頁搜尋一樣,圖片搜尋也支援篩選 src
、alt
和 title
等屬性。
程式化搜尋元素中的結構化搜尋
結構化搜尋功能也能與 Google 程式化搜尋元素搭配使用。就像查詢或網址參數中所述的運算子一樣,您在元素中的結構化搜尋會先要求您要搜尋的網頁加上標記及要搜尋的屬性:在程式中,將可程式搜尋元素和#39; 的 sort
運算子與查詢中的 more:pagemap:
運算子搭配使用,即可正確排序或限制搜尋結果。
舉例來說,加州新聞入口網站 (SignOnSanDiego.com) 會使用程式化搜尋元素,根據搜尋結果將近期報導調整成顯示故事:
為確保讀者只看到最相關且即時的新聞,SignOnSanDiego 會使用 Bias by 屬性和「強烈」權重 (以最近的發布日期為準)。SignOnSanDiego 會透過 PageMap 實作這些日期屬性;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
選項,如下所示:
... <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> ...
此方法相對較為彈性,因為它會為由這個控制項發出的所有查詢新增限制。如要查看其他選項,請參閱程式化搜尋元素中的說明文件。
探索其他功能
結構化搜尋功能提供強大的選項,讓您對於搜尋應用程式有更全面的控制權,可讓您使用自訂屬性功能,並以強大的方式為使用者排序及限制搜尋結果。此外,結構化搜尋功能也能搭配其他程式化搜尋引擎功能,例如自訂結果摘要。詳情請參閱: