1.簡介

OpenSearch是一種以XML方式定義搜索的方法,網站依據此規範實作可與其他程式介接等用途。

完整的規範可以在此網站查到 http://www.opensearch.org/Specifications/OpenSearch/1.1,本文以表格的方式整理說明。

OpenSearch 1.1版命名空間為http://a9.com/-/spec/opensearch/1.1/目前為Draft

MIME Type(Content Type或稱為Media Type)為application/opensearchdescription+xml

2. 結構與定義

2.1 <OpenSearchDescription>

<OpenSearchDescription>為OpenSearch的XML起始根節點,<OpenSearchDescription>之中定義了以下Element

Element必要多筆資料型態說明
<ShortName> O X 純文字 簡短標題,不可超過16個字元
<Description> O X 純文字 描述,不可超過1024個字元
<Url> O O <Url> 描述搜索介面或連結
<Contact> X X email 提供者的電子郵件
<Tags> X X 純文字 搜索內容的關鍵字或分類,使用空白隔開,不可超過256個字元
<LongName> X X 純文字 標題,不可超過48個字元
<Image> X O <Image> 圖示,應該包含一個16x16的image/x-icon或image/vnd.microsoft.icon,以及一個64x64的image/jpeg或image/png
<Query> X O <Query> 提供一些查詢的資訊,應該包含一個role="example"
<Developer> X X 純文字 文件建立者,不可超過64個字元
<Attribution> X X 純文字 內容擁有者,不可超過256個字元
<SyndicationRight> X X 純文字

定義搜索的權限,只能是以下四種,預設為open
open: 全部允許(允許搜索,顯示結果給使用者,傳送結果到其他位置)
limited: 允許搜索,顯示結果給使用者
private: 只允許搜索
close: 全部不允許

<AdultContent> X X 純文字 是否包含成人內容,只有false、FALSE、0、no和NO的值視為FALSE,其他視為TRUE,預設為false
<Language> X O 純文字

支援的語系,必須是[RFC5646]或者*表示不限制,應該包含一個,預設為*

<InputEncoding> X O 純文字

搜索引擎支援的查詢文字之編碼,須符合XML 1.0 Character EncodingsIANA Character Set Assignments規範,應該包含一個,預設為UTF-8

<OutputEncoding> X O 純文字

搜索引擎支援的搜索結果之編碼,須符合XML 1.0 Character EncodingsIANA Character Set Assignments規範,應該包含一個,預設為UTF-8

2.2 <Url>

<Url>為描述搜索介面或連結,<Url>之中定義了以下屬性

Attribute必要說明
template O URL樣板,依據OpenSearch URL template syntax規則處理
type O MIME Type
rel X

資源的關連,可以是以下值:
result: 搜索結果(預設)
suggestions: 建議的搜索
self: 目前的文件
collection: 一些資源
除了上面四種值之外,也可以是URL;可同時給多個值,使用空白隔開。

indexOffset X 第一筆搜索結果的索引值,預設為1
pageOffset X 搜索結果的頁數索引值,預設為1

Element內容為空

2.3 <Image>

<Image>為搜索引擎的圖示,<Image>之中定義了以下屬性

Attribute必要說明
height X 高度像素
width X 寬度像素
type X

MIME Type

Element內容為空

2.3 <Query>

<Query>為查詢相關的資訊,<Query>之中定義了以下屬性

Attribute必要說明
role O 表示此Query的意義,可以是以下值:
request: 目前的查詢
example: 範例的查詢
related: 相關的查詢
correction: 輸入錯誤時,可能更正的查詢
subset: 縮小範圍的查詢
superset: 擴大範圍的查詢
title X 標題,不可超過256個字元
totalResults X

查詢預計的結果筆數

searchTerms X 搜索的關鍵字,必須要URL Encode
count X 每頁筆數
startIndex X 第一筆搜索結果的索引值,預設為1
startPage X 搜索結果的頁數索引值,預設為1
language X

支援的語系,必須是[RFC5646]或者*表示不限制,應該包含一個,預設為*

inputEncoding X

搜索引擎支援的查詢文字之編碼,須符合XML 1.0 Character EncodingsIANA Character Set Assignments規範,應該包含一個,預設為UTF-8

outputEncoding X 搜索引擎支援的搜索結果之編碼,須符合XML 1.0 Character EncodingsIANA Character Set Assignments規範,應該包含一個,預設為UTF-8

Element內容為空。Query可引用其他命名空間,增加自訂的屬性。

3. 搜索回覆

查詢結果輸出格式為XML時(例如RSS或Atom),可以使用OpenSearch命名空間,包含以下Element

Element必要多筆資料型態說明
<totalResults> X X Int

查詢預計的結果筆數

<startIndex> X X Int 第一筆搜索結果的索引值,預設為1
<itemPerPage> X X Int 每頁筆數
<Query> X O <Query> 提供一些查詢的資訊,應該包含一個role="example"

4. OpenSearch URL template syntax

URL樣板語法和<Query>有些相關,利用這個範例來解說

<Url type="application/rss+xml" xmlns:b="http://example.com/extensions/" template="http://example.com?q={searchTerms}&amp;p={startPage?}&amp;d={b:datetime?}"/>

規則簡易整理如下:

  1. 參數使用大括弧表示。
  2. 必填參數結尾不包含問號,如上例之{searchTerms}。
  3. 選填參數結尾包含問號,如上例之{startPage?}。
  4. 可用參數預設有{searchTerms}、{count}、{startIndex}、{startPage}、{language}、{inputEncoding}和{outputEncoding},其意義與<Query>一致。
  5. 可使用其他命名空間,增加自訂屬性,如上例之{b:datetime}。
文章標籤
創作者介紹

小殘的程式光廊

emn178 發表在 痞客邦 PIXNET 留言(0) 人氣()