在幾次閒談與偶然之中,被拉入伙,開始了這個說做就做的 project。
搜尋引擎,是一個已經融入我們日常生活的工具, 然而,對於許多人而言,它可能如同一個黑盒子, 想要研究卻無從著手。
個人在研究所時,是做 自然語言處理 (NLP) 相關研究, 工作這幾年也是與 搜尋引擎 相關。 希望能透過這次的機會,能分享一些相關經驗。
本篇文章面向 初學者,也較著重 實作。
在 NLP
與 後端
的部分提供 jupyter notebook 與測試資料,
希望能有更好的互動性,並使內容更加容易理解。
本次的文章、實作皆是與 Hello Kirby 合作完成
個人(tainvecs) 負責 後端
與 搜尋引擎
的部分
Kirby 負責 前端
與 爬蟲
。
本次系列的實作與文章也會同步更新於此 Github. 實作的結果也可以從 Over Engineering 上看到。 內容中,如有不足之處,還請不吝指教。
在還沒有認識 NLP 之前,我一直以為 AI 是一個神話。 但沒想到它早已被實踐在我們的日常生活中, 我們每天在用的 Google 背後的真正價值是 AI 算法。 非常感謝,這次的合作讓我打開了狹隘的視野。
by Hello Kirby
如果你對於:
- 要如何實作一個
搜尋引擎
。 - 如何從設計、開發到完整上線的專案。
- 新的技術,新的平台。
這些議題有興趣的讀者,非常適合閱讀這個系列。
本次文章預設讀者對於搜尋引擎
的部分為零基礎,
期望能以更佳淺顯易懂的方式介紹搜尋引擎
與NLP
。
tainvecs: 看看 Kirby 的
動機
與期望目標
寫的多麽冠冕堂皇。TLDR: IT 邦的搜尋引擎讓人用得有點 $#^&@, 所以我們想做一個看看,結果發現其實也不容易😅。
IT 邦幫忙 是台灣最有名的軟體工程知識平台之一, 其中,每年最盛大的事件就是 IT 鐵人賽, 並力邀眾多的工程師連發 30 天的文章。
一篇有用的文章,可以幫助到成千上百的工程師, 但實際上是有點難在 IT 幫上找到方案, 這也是我們主要要優化的問題 搜尋功能 跟 用戶體驗。
我們也對產業趨勢有濃厚的興趣, 在台灣的社群中,要取得客觀又具公信力的資訊實屬不易。
因此,專案的另一個主題便是藉由分析 IT 邦的文章來取得 統計資料, 或許可以幫助開發者了解產業,也能提供一些方向給教育者跟內容創作者。
我們試圖打造出 提供用戶 有用的資訊 且 良好的使用者體驗 的搜尋引擎。
- 提供正確且有關的結果
- 搜尋反饋速度
- 錯字修正
- 特徵搜尋跟過濾功能
- 支援漢字
- 支持同義詞
- 有效的關鍵字推薦
- 保留用戶近期的關鍵字
- 乾淨整潔的 UI 介面
- 每年被撰寫最多次的程式語言
- 每年用戶關注度最高的程式語言
- 每年被提到最多次的資料庫
- 每年被提到最多次的雲端服務
- 每年被提到最多次的技術
- 每年被撰寫最熱門的議題
- 每年關注度最高的議題
- 每年有用的文章跟廢文的佔比
- 平台的文章類別總體佔比
- 哪篇文章回覆最多次
- 哪篇文章最多人看
這次的合作也讓我們重新體會到,從頭規劃及開發一個產品的樂趣與不易。
技術上,我 與 Kirby 都選擇了與工作上幾乎完全不同的技術棧。 一方面,也算是對自己的挑戰及同時享受過程中的學習。 像是:remix、deno、meilisearch、keybert、flask、github action、fly.io 及 supabase, 都是我們實作過程中認識的新玩具。
另一方面,考量到如何簡化整體產品的複雜程度, 如:選擇更加容易上手的搜尋引擎 meilisearch。
我們在業餘前提下,深刻的體會到在現實跟理想的差距。 很多預定想完成的目標,礙於有限時間與精力沒能完全達成。
然而,在取捨之中,我們也意識到專案管理這個角色的價值。 很多經驗,也是只有真槍實彈的做專案才知道。
礙於時間未能完成得部分,在最後若篇幅允許, 也會放上被廣泛使用或可能可行的做法。
tainvecs: 我絕對不會告訴你,當初我在寫碩士論文的時候,問學長 future work 要怎麼寫? 學長:反正就把你所有沒時間做或做不到的事都寫上去就對了!😝