讓搜尋模組支援搜尋建議

MozSearch 格式的搜尋模組可以支援搜尋建議,當使用者在搜尋欄中逐字鍵入關鍵詞時,Firefox 2 將依據搜尋模組內指定的 URL 送出查詢並取回結果。

取回結果之後,Firefox 將其顯示為一個下拉選單,讓使用者從中挑選搜尋引擎建議的關鍵詞。如果使用者繼續輸入關鍵詞,則會重新取回結果並更新選單。

Firefox 2 中內建的 Yahoo! 與 Google 搜尋模組都支援搜尋建議功能。

搜尋模組的工作

搜尋模組必須額外定義一個 <Url> 元素以便支援搜尋建議功能,此元素之 type 屬性需設定為 "application/x-suggestions+json"。支援搜尋建議功能的模組都會有兩個 <Url> 元素,另一個元素指定主要的 code>text/html</code> 搜尋 URL。

舉例來說,Yahoo! 搜尋模組的 <Url> 長得像這樣:

<Url type="application/x-suggestions+json" template="http://ff.search.yahoo.com/gossip?output=fxjson&command={searchTerms}"/>

如果使用者在搜尋欄中輸入「fir」,則 Firefox 會將此 URL 的 {searchTerms} 代換為「fir」後送出搜尋:

<Url type="application/x-suggestions+json" template="http://ff.search.yahoo.com/gossip?output=fxjson&command=fir"/>

搜尋回來的結果將構成建議詞清單。

製作搜尋模組的方法可以參考製作 MozSearch 搜尋模組一文。

伺服器端的工作

搜尋建議功能的重點在伺服端的程式,如果你是網站設計師而想支援搜尋建議功能,則必須實做出依據搜尋字串給予進一步搜尋建議詞彙、並以 JSON 格式傳回的功能。

當瀏覽器想取回搜尋字串時,會對 <Url> 元素指定的 URL 送出 HTTP GET 要求;此時伺服器則需依據字串決定相關字詞為何,並以 JSON 傳回 2 到 4 個建議字詞,如下:

查詢字串
JSON 的第一個元素是原始查詢字串,這樣 Firefox 可以得知傳回值是否與目前查閱的字詞相符。
建議字詞列表
建議字詞的陣列,此陣列需以「[」及「]」括起,例如 <tt>["建議詞 1", "建議詞 2", "建議詞 3", "建議詞 4"]</tt>
說明
此元素為選用,亦為一個陣列,分別針對每個「建議字詞列表」的建議詞設定說明,其中可以是任何搜尋引擎想提供瀏覽器顯示的資訊,例如此建議詞有多少搜尋結果等等。
Firefox 2 尚不支援「說明」功能,會忽略此傳回值。
查詢網址
此元素為選用,還是一個陣列,內容是各建議詞的替代網址。打個比方:如果除搜尋結果頁面之外還想直接提供建議詞的地圖連結,那就可以將地圖的網址列在此陣列裡。
若沒有額外指定此元素,則將依據搜尋模組 XML 中的 <Url> 元素決定查詢網址。
Firefox 2 尚不支援「查詢網址」功能,會忽略此傳回值。

也就是說,若搜尋詞為「fir」且不傳回說明及查詢網址,則傳回的 JSON 應該是長這樣:

["fir", ["firefox", "first choice", "mozilla firefox"]]

在此範例中只涵括查詢字串及建議字詞列表兩元素,其他選用的都不列入。

雖然建議的字詞想放多少就可以放多少,但由於每次使用者多打一個字都會查詢一次,所以還是有所限度比較穩當。至於怎麼依據使用者的要求提出建議,就全交給你自己決定了。

文件標籤與貢獻者

標籤: 
 此頁面的貢獻者: BobChao
 最近更新: BobChao,