「讓搜尋模組支援搜尋建議」修訂間的差異
出自 MozTW Wiki
小 |
小 |
||
(未顯示同一使用者於中間所作的 1 次修訂) | |||
行 1: | 行 1: | ||
− | + | {{MDC|讓搜尋模組支援搜尋建議}} | |
+ | |||
+ | 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"]] | ||
+ | |||
+ | 在此範例中只涵括查詢字串及建議字詞列表兩元素,其他選用的都不列入。 | ||
+ | |||
+ | 雖然建議的字詞想放多少就可以放多少,但由於每次使用者多打一個字都會查詢一次,所以還是有所限度比較穩當。至於怎麼依據使用者的要求提出建議,就全交給你自己決定了。 |
於 2006年12月10日 (日) 15:56 的最新修訂
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"]]
在此範例中只涵括查詢字串及建議字詞列表兩元素,其他選用的都不列入。
雖然建議的字詞想放多少就可以放多少,但由於每次使用者多打一個字都會查詢一次,所以還是有所限度比較穩當。至於怎麼依據使用者的要求提出建議,就全交給你自己決定了。