改善網站內建搜尋系統七步驟

 

前Apple Computer 的VP,Nielsen Norman的共同創辦人Jacob Nielsen曾點出網站設計的十大敗筆(Top 10 Mistakes in Web Design),「不好的搜尋系統(Bad Search)」以第一名登榜。一個好的搜尋系統能讓網站更滿足使用者需求,專門研究使用者經驗的Page Laubheimer於是寫了此篇文章:7 Ways to Improve Your Website’s or Intranet’s Built-In Search Engine,七步驟帶領讀者改善網站內建的搜尋系統。

首先,必須先搞懂衡量搜尋系統成效的兩大方法:Precision(求準率)和Recall(求全率)。Precision指的是在一個搜尋結果中,相關(符合使用者需求)的文件佔全部搜尋結果的多少?而求全率則是指被搜尋到的相關文件佔整個網站相關文件的多少?如果是一個完美的搜尋系統,則Precision會是100%,表示我搜尋後跑出的所有結果都是相關的;Recall也會是100%,表示這個網站中所有相關的文件都有被找到。然而,因為搜尋系統不夠完美,Precision和Recall通常無法達到100%。舉例來說,如果一個網站中總共有1000篇文件,我要在這個網站中找和「線上捐款系統」相關的文件,於是我輸入了「線上捐款系統」作為query,而跑出500筆搜尋結果,其中只有100筆是相關的,但是事實上這個網站中有300筆相關的文件,也就是有200筆沒有被我搜尋到。這個時候Precision就等於100/500,而Recall則是100/300。

 

清楚如何計算搜尋系統的成效後,就要進入正題:到底如何改善搜尋系統,提升搜尋結果的Precision和Recall呢?以下七步驟可作為改善的方針:

第一步:改上善常見關鍵字(Common query)的搜尋結果。

去統計網站中使用者最常輸入的Query,並藉由使用者研究找出最符合使用者需求的前十筆資料,並設定每當使用者輸入這個Common query時,系統就自動把這十筆最相關結果列出。但是不可以用「Top ten」或像廣告一般的呈現方式,因為很容易被使用者直接忽視。

第二步:關鍵字推薦(Search suggestion)。

在使用者輸入Query的同時,搜尋框下方會列出系統建議的關鍵字給使用者做參考,這些建議必須經過縝密的邏輯運算以符合每位使用者的不同需求,並標示出推薦詞和原本Query的關聯性。此外,如果是E-commerce的網站,建議在推薦搜尋時顯示產品的照片;如果是使用者搜尋員工姓名時,則建議出現此員工的Profile Page預覽畫面;而如果使用者輸入的Query根本沒有相符文件,則建議直接顯示沒有結果,以節省使用者時間。許多系統會根據使用者過去的搜尋行為做推薦,例如我常常在google Search找英文單字的翻譯,如今每當我輸入一個英文單字時,Google就會自動在搜尋框下方出現這個單字的中文,或是翻譯頁面。

第三步:辨別同義詞、替代詞。

例如使用者如果輸入「fund」,系統應該同時找出「fund」同義詞的其他結果,因為有時候使用者可能不知道其他同義詞,但其他同義詞的相關文件也會符合使用者的需求。這個方法可以提升Recall,因為不會漏掉其他文件,卻可能提升搜尋結果中不相關文件的比例而降低Precision。

第四步:過濾出「字根」。

例如當使用者輸入「reduction」、「Reduce」、「Reducing」時,系統都應該要跑出全部包含「Reduc」的結果,不然如果輸入reduction卻過濾掉reduce的相關文件時,就會漏掉很多所需資訊。故過濾出字根可以提升Recall,卻可能降低Precision,因為當我輸入「university」卻跑出和「universal」的相關結果時,就大大不符合需求了。

第五步:處理拼字錯誤。

當使用者拼錯字時,可能導致搜尋結果跑不出來,這時候就要「禮貌性」的糾正使用者,因為糾錯很容易淪為指責,所以系統的用詞就很重要,可以使用「您剛剛是想要表示....的意思嗎?」這種語氣告知使用者。而Google Search則是直接幫使用者跑出拼字正確的結果,以減少使用者重新查詢的時間。

第六步:支援同音詞。

有時候使用者只知道Query的唸法而不知道拼法,例如輸入Stuard但其實是想要找Steward,這時候系統應該要可以搜尋到「音同字不同」的所有結果。這個功能稱之為「Soundex」,已經內建於許多程式語言中,例如php、mySQL。但是這也很容易發生找到不相關文件的問題,降低搜尋結果的Precision。

第七步:忽略Stop words。

Stop words也就是沒有獨立意義的字詞,如「a」、「is」等等。系統必須要能忽視使用者輸入的Stop words以及文件中的Stop words,因為如果Stop words出現頻率高而讓系統判斷此文件和Query相符程度高,而造成搜尋方向錯誤。系統通常都有建置自己的Stop words list,在設定時也應該慎選,以免因此排除掉有用的資訊,使Recall降低。

一個好的搜尋系統是無論使用者輸入Query時就算出現錯誤或不夠完善,網站最後也能跑出高Recall & Precision的搜尋結果,以利使用者更快速找到自己所需的資訊。全站檢索能彌補導覽系統的不足,也能提升使用者對於網站的觀感,是網站設計中非常重要的一環。