「站內搜尋」是網站很常見的功能之一,操作上是讓使用者輸入一組關鍵字,系統會到資料庫尋找與關鍵字相關的資料,並把資料呈現在網頁上,而 Google 提供的 Programmable Search Engine 就可以幫您的網站做這件事情,以前是命名為 Google Custom Search。 本文會先說明自製「站內搜尋」功能會遇到的問題,以及使用 Programmable Search Engine 的優缺點,最後再說明如何使用 Programmable Search Engine。

簡易自製設計思路

我們先假設一個簡單的例子,假如網站中只有商品頁面,這樣資料庫應該也會有一個相對應的 Product 資料表,而搜尋功能通常會有以下幾點要求:

  1. 使用模糊搜尋
  2. 必須可以搜尋文章內容
  3. 可以使用多個關鍵字搜尋

根據上方的需求,我們可以寫出SQL搜尋語法如下:

            
                SELECT * FROM product
                WHERE
                    title LIKE '%keywords_1%' OR
                    title LIKE '%keywords_2%' OR
                    content LIKE '%keywords_1%' OR
                    content LIKE '%keywords_2%'
            
        

以上語法,並沒有什麼問題,就是非常耗效能而已。 模糊搜尋及 OR 語法都是比較耗效能的語法,而且上方例子只是兩個關鍵字而已,如果有更多的關鍵字,這樣 SQL 語法就會寫得更長更耗效能。 搜尋內文的部分,通常內文的文字都很長,因此搜尋上也是相當耗效能的。

此外,在實際的網站開發上,一個網站不可能只有商品頁面,可能還會有新聞頁面或獨立的文章頁面,這些頁面一般都會分散在不同的資料表中, 如果要讓這些頁面都搜尋得到的話,我們可以簡單粗暴的使用 UNION ALL 來串連這些表格,而 UNION ALL 又是一個耗效能的語法,SQL 搜尋語法可能如下:

            
                SELECT title FROM product
                WHERE
                    title LIKE '%keywords_1%' OR
                    title LIKE '%keywords_2%' OR
                    content LIKE '%keywords_1%' OR
                    content LIKE '%keywords_2%'
                UNION ALL
                SELECT title FROM news
                WHERE
                    title LIKE '%keywords_1%' OR
                    title LIKE '%keywords_2%' OR
                    content LIKE '%keywords_1%' OR
                    content LIKE '%keywords_2%'
                UNION ALL
                SELECT title FROM page
                WHERE
                    title LIKE '%keywords_1%' OR
                    title LIKE '%keywords_2%' OR
                    content LIKE '%keywords_1%' OR
                    content LIKE '%keywords_2%'
            
        

優缺點分析

自行製作 Programmable Search Engine
優點
  • 開發完成即時能用
  • 可做更全面的進階搜尋
  • 不用擔心第三方忽然不支援
  • 搜尋結果樣式較彈性
  • 伺服器負擔較小
  • 簡易快速製作
  • 可搜尋圖片
  • 只要有網址都能搜尋
  • 免費,且沒有流量限制
缺點
  • 伺服器負擔較大
  • 只能搜尋到資料庫中的資料
  • 技術能力要求較高
  • 要等Google索引才搜尋得到
  • 搜尋結果樣式較固定
  • 搜尋結果有廣告

如何使用 Programmable Search Engine

安裝 Programmable Search Engine

安裝方法非常簡單,先至官網進行一些基本設定設定,然後按下建立按鈕,請記得在要搜尋什麼?選擇搜尋特定網站或網頁,並輸入要搜尋的網址。

之後,將畫面中的程式碼複製到您要顯示搜尋匡的地方即可。

安裝完成之後,要記得等到網站被 Google 索引之後才能搜尋得到,在開發階段,網站尚未上線之前,是沒辦法搜尋到任何資料。

其他設定

Google 還提供搜尋結果頁面的功能調整,您可以調整分類標籤、置頂查詢、每頁結果數...等等,還有很多,大家可以自行摸索。

此外,也可以調整外觀與風格,這個應該是網頁設計比較重要的功能,至少要把搜尋匡及搜尋結果頁面,調整成與原本網站的風格一致。 但比較可惜的是,這部分可調整的項目相當有限,大部分只能調整文字顏色及文字大小而已,版面及區塊間距都沒有辦法改,搜尋匡的部分還能自己用 CSS 來改,搜尋結果頁面就真的沒辦法了。

如果要比較彈性的可以自製搜尋匡及搜尋結果的話,就要使用進階的 Custom Search JSON API,可是這就要額外付費了,收費方式可以參考下方網址。

真正的作法

自製「站內搜尋」真正的作法是使用搜尋引擎軟體,例如:Elastic Search,但這類軟體通常都很難設置,對工程師的技術能力要求也很高,通常中小型網站是不會自己架設搜尋引擎。所以如果您的網站只是一般的部落格或公司形象網站,還是選擇本文介紹的方式較為適合。