讓搜尋模組支援搜尋建議
出自 MozTW Wiki
MozSearch 格式的搜尋模組可以支援搜尋建議,當使用者在搜尋欄中逐字鍵入關鍵詞時,Firefox 2 將依據搜尋模組內指定的 URL 送出查詢並取回結果。
取回結果之後,Firefox 將其顯示為一個下拉選單,讓使用者從中挑選搜尋引擎建議的關鍵詞。如果使用者繼續輸入關鍵詞,則會重新取回結果並更新選單。
Firefox 2 中內建的 Yahoo! 與 Google 搜尋模組都支援搜尋建議功能。
搜尋模組的工作
搜尋模組必須額外定義一個 <Url>
元素以便支援搜尋建議功能,此元素之 type
屬性需設定為 "application/x-suggestions+json"
。支援搜尋建議功能的模組都會有兩個 <Url>
元素,另一個元素指定主要的 code>text/html 搜尋 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 可以得知傳回值是否與目前查閱的字詞相符。
- 建議字詞列表
- 建議字詞的陣列,此陣列需以「[」及「]」括起,例如 ["建議詞 1", "建議詞 2", "建議詞 3", "建議詞 4"]
- 說明
- 此元素為選用,亦為一個陣列,分別針對每個「建議字詞列表」的建議詞設定說明,其中可以是任何搜尋引擎想提供瀏覽器顯示的資訊,例如此建議詞有多少搜尋結果等等。
- 查詢網址
- 此元素為選用,還是一個陣列,內容是各建議詞的替代網址。打個比方:如果除搜尋結果頁面之外還想直接提供建議詞的地圖連結,那就可以將地圖的網址列在此陣列裡。
- 若沒有額外指定此元素,則將依據搜尋模組 XML 中的
<Url>
元素決定查詢網址。
也就是說,若搜尋詞為「fir」且不傳回說明及查詢網址,則傳回的 JSON 應該是長這樣:
["fir", ["firefox", "first choice", "mozilla firefox"]]
在此範例中只涵括查詢字串及建議字詞列表兩元素,其他選用的都不列入。
雖然建議的字詞想放多少就可以放多少,但由於每次使用者多打一個字都會查詢一次,所以還是有所限度比較穩當。至於怎麼依據使用者的要求提出建議,就全交給你自己決定了。