|
|
行 1: |
行 1: |
| #REDIRECT [[http://developer.mozilla.org/zh_tw/docs/%E8%AE%93%E6%90%9C%E5%B0%8B%E6%A8%A1%E7%B5%84%E6%94%AF%E6%8F%B4%E6%90%9C%E5%B0%8B%E5%BB%BA%E8%AD%B0]] | | #REDIRECT [[http://developer.mozilla.org/zh_tw/docs/%E8%AE%93%E6%90%9C%E5%B0%8B%E6%A8%A1%E7%B5%84%E6%94%AF%E6%8F%B4%E6%90%9C%E5%B0%8B%E5%BB%BA%E8%AD%B0]] |
− |
| |
− | MozSearch 格式的搜尋模組可以支援搜尋建議,當使用者在搜尋欄中逐字鍵入關鍵詞時,Firefox 2 將依據搜尋模組內指定的 URL 送出查詢並取回結果。
| |
− |
| |
− | 取回結果之後,Firefox 將其顯示為一個下拉選單,讓使用者從中挑選搜尋引擎建議的關鍵詞。如果使用者繼續輸入關鍵詞,則會重新取回結果並更新選單。
| |
− |
| |
− | Firefox 2 中內建的 Yahoo! 與 Google 搜尋模組都支援搜尋建議功能。
| |
− |
| |
− | =搜尋模組的工作=
| |
− | 搜尋模組必須額外定義一個 <code><Url></code> 元素以便支援搜尋建議功能,此元素之 <code>type</code> 屬性需設定為 <code>"application/x-suggestions+json"</code>。支援搜尋建議功能的模組都會有兩個 <code><Url></code> 元素,另一個元素指定主要的 code>text/html</code> 搜尋 URL。
| |
− |
| |
− | 舉例來說,Yahoo! 搜尋模組的 <code><Url></code> 長得像這樣:
| |
− |
| |
− | <pre>
| |
− | <Url type="application/x-suggestions+json" template="http://ff.search.yahoo.com/gossip?output=fxjson&command={searchTerms}"/>
| |
− | </pre>
| |
− |
| |
− | 如果使用者在搜尋欄中輸入「fir」,則 Firefox 會將此 URL 的 <code>{searchTerms}</code> 代換為「fir」後送出搜尋:
| |
− |
| |
− | <pre>
| |
− | <Url type="application/x-suggestions+json" template="http://ff.search.yahoo.com/gossip?output=fxjson&command=fir"/>
| |
− | </pre>
| |
− |
| |
− | 搜尋回來的結果將構成建議詞清單。
| |
− |
| |
− | 製作搜尋模組的方法可以參考[[製作 MozSearch 搜尋模組]]一文。
| |
− |
| |
− | =伺服器端的工作=
| |
− | 搜尋建議功能的重點在伺服端的程式,如果你是網站設計師而想支援搜尋建議功能,則必須實做出依據搜尋字串給予進一步搜尋建議詞彙、並以 [http://www.json.org/ JSON] 格式傳回的功能。
| |
− |
| |
− | 當瀏覽器想取回搜尋字串時,會對 <code><Url></code> 元素指定的 URL 送出 HTTP GET 要求;此時伺服器則需依據字串決定相關字詞為何,並以 JSON 傳回 2 到 4 個建議字詞,如下:
| |
− |
| |
− | ; '''查詢字串'''
| |
− | : JSON 的第一個元素是原始查詢字串,這樣 Firefox 可以得知傳回值是否與目前查閱的字詞相符。
| |
− |
| |
− | ; '''建議字詞列表'''
| |
− | : 建議字詞的陣列,此陣列需以「[」及「]」括起,例如 <tt>["建議詞 1", "建議詞 2", "建議詞 3", "建議詞 4"]</tt>
| |
− |
| |
− | ; '''說明'''
| |
− | : 此元素為選用,亦為一個陣列,分別針對每個「建議字詞列表」的建議詞設定說明,其中可以是任何搜尋引擎想提供瀏覽器顯示的資訊,例如此建議詞有多少搜尋結果等等。
| |
− |
| |
− | <div class="note">Firefox 2 尚不支援「說明」功能,會忽略此傳回值。</div>
| |
− |
| |
− | ; '''查詢網址'''
| |
− | : 此元素為選用,還是一個陣列,內容是各建議詞的替代網址。打個比方:如果除搜尋結果頁面之外還想直接提供建議詞的地圖連結,那就可以將地圖的網址列在此陣列裡。
| |
− |
| |
− | : 若沒有額外指定此元素,則將依據搜尋模組 XML 中的 <code><Url></code> 元素決定查詢網址。
| |
− |
| |
− | <div class="note">Firefox 2 尚不支援「查詢網址」功能,會忽略此傳回值。</div>
| |
− |
| |
− | 也就是說,若搜尋詞為「fir」且不傳回說明及查詢網址,則傳回的 JSON 應該是長這樣:
| |
− |
| |
− | ["fir", ["firefox", "first choice", "mozilla firefox"]]
| |
− |
| |
− | 在此範例中只涵括查詢字串及建議字詞列表兩元素,其他選用的都不列入。
| |
− |
| |
− | 雖然建議的字詞想放多少就可以放多少,但由於每次使用者多打一個字都會查詢一次,所以還是有所限度比較穩當。至於怎麼依據使用者的要求提出建議,就全交給你自己決定了。
| |