Google的自訂搜尋引擎,讓使用者利用Google的資源打造自己的搜尋,設定檔可以放在Google上用代號連結,或是放在其他地方用url連結 (Linked CSE),使用Linked CSE可以在使用者端動態的改變設定檔及其連結,增加了很大的彈性。另外Google有提供一些工具,可以動態產生設定檔,例如makecse可以讀取HTML、RSS、ATOM、OPML格式的檔案,掃描其中的連結,作為設定檔中的網域限制,來限制CSE的查詢範圍,Blogger in draft中的search box的其中一部分,就是使用這個功能,提供範圍為blog中所有連結的查詢。
可以用這個線上Demo來測試,試試在URL欄輸入feed的位置,會有什麼效果。
Blogger Data API能產生符合多個標籤的文章的feed (使用summary post,而不是full post,以減少不必要的連結,max-results參數設成很大的數以取得所有符合的文章),加上Linked CSE、makecse (參數設定pattern=exact),雖然還有些缺陷,但是可以做出多標籤文章中的關鍵字查詢 (Multiple labels or tags keyword search),當文章越來越多,若是標籤有分類好,這個功能將來也許會有用處。
這個方法的缺陷在於:
- 因為makecse本身的功能,會多出一些網站 (feed中多餘的資訊,或是文章摘要中的連結),目前一般只會多一個,例如傳入http://happytemplate.blogspot.com/feeds/posts/summary/-/Javascript/Cross%20Domain這個feed,產生的設定檔會多出happytemplate.blogspot.com/search/label/Javascript。
(非本網誌的連結可以用搜尋運算子site:來排除,使用Google AJAX Search API的話,可以用setQueryAddition()在幕後加入。若要完全解決多出來的一個網站,需要用其他方法動態產生設定檔。) - 目前只有web search有此功能,blog search還沒有,差別在於文章本身之外的內容也可能會被搜尋到,例如在側邊欄中的東西。
- 因為設定檔是動態產生,所以會要多等一下,若是使用Google AJAX search control,通常第一次搜尋,會有提示訊息要你過幾秒再按一次。
使用Google AJAX Search API做了以上的功能放在側邊欄,介面使用其中的google.search.searchControl,沒有多作修改。