Dicaso 笛卡索:Dcard 文章搜尋引擎

Dicaso上線至今結束,創造超過三萬瀏覽量,服務五千多次搜尋,真的很感謝大家這兩週的愛護與使用![2016.07.22更新]

其實一開始,就抱持著短線目標,沒有打算持續經營或是創業,以有趣好玩的心態出發,讓辛苦的專題作品曝光,同時也透過使用者行為的觀察,瞭解什麼樣的東西會討人喜歡,大家會怎麼下關鍵字搜尋文章。在這兩週內,平日要實習,假日要到實驗室做老師接的專案,能維護的時間不多,已經盡力讓 Server 正常運作,並改善網頁呈現的一些問題了。

儘管如煙火般曇花一現,但這段時間收到的搜尋紀錄以及流量來源,才是重要的資產,發現很多有趣的事情,也激發了更多想法,希望未來有機會實踐出來

dicaso index - Dicaso 笛卡索:Dcard 文章搜尋引擎


期末專題與現在的 Dicaso

Dicaso 是我們的資訊檢索與探勘 (IR) 期末專題,實作文章搜尋 (資訊檢索) 與熱門文章預測 (資料探勘) 兩大功能,也因為有之前架設 HiTicket 以及玉山黑客松的參賽經驗,可以比較得心應手把網頁搞定 (其實模板都一樣拉 XD),迅速整合前後端與資料庫,服務大眾。

請支持《傑瑞窩在這》原創文章。原文標題:Dicaso 笛卡索:Dcard 文章搜尋引擎,原文網址:https://jerrynest.io/dicaso-search/

各位目前看到的 Dicaso,僅提供文章搜尋圖片牆服務,預測熱門度的部分因為需要包成 API,還需要一些時間,不過根據這幾天使用者的回饋,大致上也有了未來發展的想法,期待有很快地能釋出改版


土炮自建的搜尋引擎

透過 Dcard API,我們抓取八個看版的文章進行實驗,文章發表時間由 2013/05 至 2016/06,替大約 30 萬篇文章進行搜尋索引,並獨立架設一個 Search Server,處理 Query。 在建立模型前,我們先對文字做些前處理:

  • 過濾中文 Stopword,例如:的、了
  • 過濾項目符號、標點符號、特殊字符、網址
  • 將全型英文字元與數字轉為半型小寫
  • 利用Jieba來進行中文斷詞,使用繁體中文字典檔,並且加入自定義的特殊名詞,例如:「提拉米蘇」、「蘇打綠」
  • 替發問類型文章做標籤

之後會將標題與內文合併,以 Uni-gram 的形式建立模型。這裡使用 Vector Space Model (VSM),平滑方式為 Laplace Smoothing,並透過 Scikit-Learn 套件 TFidfVectorizer 來加速開發。用戶輸入查詢關鍵字後,我們會根據 IDF 轉換出一組 Query Vector,透過 Dot Product Similarity 計算排序分數,並根據文章 ID 到我們的 MongoDB 抓取內文,最後將搜尋結果顯示在網頁上。

dicaso flow - Dicaso 笛卡索:Dcard 文章搜尋引擎

系統架構圖

因為搜尋結果沒有驗證依據,我們只能憑肉眼判斷好壞,下圖是搜尋“我失戀了怎麼辦”的結果比較。左邊將標題權重增加,效果顯著提升

compare - Dicaso 笛卡索:Dcard 文章搜尋引擎

搜尋「我失戀了怎麼辦」的結果比較


關鍵字廣告

如同 Google, Yahoo 搜尋引擎一樣,我們最後加入了關鍵字廣告,並且把關鍵字索引加入 Model 中,因此用戶只要搜尋特定關鍵字,就會出現預先設定好的推薦廣告。不過分析 Log 發現,都沒人搜尋我們埋的特定關鍵字阿哈哈!

dicaso ad - Dicaso 笛卡索:Dcard 文章搜尋引擎

關鍵字廣告功能


有趣的事情

上線之後,獲得許多關注,看到 Google Analytics 後台的數字,實在是嚇了一跳

dicaso - Dicaso 笛卡索:Dcard 文章搜尋引擎

Google Analytics 偵測的目前線上人數

當然也有不懷好意的攻擊,好在我們使用的是 NoSQL 資料庫,對於傳統的 SQL injection 免疫

injection - Dicaso 笛卡索:Dcard 文章搜尋引擎

SQL injection Log


因為有需求,所以存在

這不是笛卡爾的我思故我在,而是要打造一款用戶會喜歡的產品。我們都希望文章搜尋可以全文檢索,可以有文章圖片預覽,而對於進階使用者,希望有圖片牆,圖片過濾等功能。以這樣的思考方向出發,檢視了這三天的流量以及回饋,確實是驗證了我們的預期假設,而這樣的方式,也將持續套用在不同看板上,針對不同的看板做出相對應的服務!

資源本來就有,只是要以什麼樣的面貌來呈現,並加以應用。我想笛卡索提出的 Dcard 圖片牆,並不是先驅,文章搜尋更是在 Google 面前耍大刀,可是做這些事情就是改善現有問題,滿足需求,笛卡索因此而存在!


參考資料

如果您覺得這篇文章有幫助,歡迎按個讚或分享出去唷:

樂於分享的軟體工程師,曾在新創與大型科技公司實習,獲得黑客松競賽冠軍,擔任資安研討會講者。長期熱衷於資訊安全、雲端服務、網路行銷等領域,希望將科技知識分享給更多人。內容轉載請來信:jlee58tw@gmail.com

發表回應