Post
2026年6月12日 上午12:09

關於mosir的推薦演算法

為你推薦時間軸中的文章來源有三種:

  • Updated conversations:自己的文章、有參與討論的文章的新留言、或是之前有看過的文章內有追蹤中的使用者的新留言。
  • Following:追蹤中的使用者發表的文章。
  • Discovery:根據互動歷史,系統認為您可能有興趣的探索類內容。

三種文章會混合之後,進一步分成有看過跟沒看過的,以及依照文章發表時間分組。

沒有看過的新文章通常會顯示在時間軸最上方,而往下是已經看過的文章,再往下是時間比較舊但還沒看過的文章,以此類推。而在文章舊到一定程度之後系統便不會區分是否有看過。

另外在混合之後,沒有看過的文章會經過第二層的次排序。大致上的規則是:

  • 剛發表的文章在最前面,保持一定的基礎曝光時間
  • 可能很有興趣的文章在最前面,讓文章觸及對的觀眾
  • 很多人互動的文章在最前面,讓討論可以持續下去
  • 同個作者的第二篇文章,放比較後面,把距離拉開,讓每個作者都有公平的曝光機會

然後是這次新增的動態調整。

一般來說系統不會把好幾天以前的文章跟最近的文章混在一起。

但如果是在超過一段時間才回來mosir的時候,系統會進入補進度模式。

補進度模式下的文章會突破一定程度的時間限制。只要文章夠符合您的興趣,就會出現比較前面。

也就是說,在幾天之後回來,系統會把這幾天您可能有興趣的文章整理過後再給您,而不是只推薦最近的文章。

Mosir 開發筆記14 篇文章
歡迎所有互動

因為某些原因想記錄一下mosir目前的圖片載入機制。

mosir的圖片載入有三個階段:

  1. 模糊迷你圖(28 Bytes純文字):用BlurHash產生的模糊版本,把圖片壓縮到極致放進網址本身,瀏覽器在知道網址的瞬間就載入完成。
  2. 縮圖(平均80KB AVIF):圖片縮小到1,000x1,000的小圖,用來在點開大圖前顯示,可以提供HiDPI 2x左右的裝置看不到像素鋸齒(極保守估計,實際上我的3x裝置還沒看到過肉眼可見的鋸齒)。有線網路大約0.01~0.02秒內可以載完。
  3. 大圖(平均700KB AVIF):最接近原圖的版本,解析度8,192x8,192以內。在點開大圖之後才會載入,有線網路載入需要約0.1~0.2秒。

BlurHash稍微有點爭議,生成的模糊圖效果也不算理想,但我自己是覺得視覺效果還是比Skeleton好一點。

AVIF是好東西,日常圖片通常可以壓縮到WebP的50%,png的5%。

拜託寫圖片上傳服務的各位大大不要再輸出成WebP了那個又慢又肥又吃瀏覽器CPU拜託

歡迎所有互動

昨天半夜不睡覺做的事情:搜尋引擎升級兼換硬碟

步驟是這樣的:

  1. 修改部署yaml檔到更新後狀態:修改版本號參數、PVC從standard-rwo(混合碟)換成premium-rwo(純SSD)
  2. git commit & push到repo上,同時apply argo application資源進叢集(版本號不能從git repo直接讀)
  3. Argo這時候會卡在版本升級後資料不相容,而且硬碟不能用魔法變成SSD,不過沒關係,這是為什麼要半夜不睡覺
  4. 因為要把部署跟硬碟砍光。刪除STS跟PVC,然後Argo Sync讓Argo發現服務跟硬碟都不見了,去拿個新的。
  5. 此時搜尋引擎可以正常開啟但是空的。把準備好的search-sync job apply到cluster上,從main db把資料撈出來放進搜尋引擎
  6. 為了偷一點時間,同步作業會從最新的資料開始。同步的同時確認搜尋可以找到東西,這個時候系統就部分恢復上線了,只是舊資料還找不到而已
  7. 大約四分鐘以後同步作業完成。檢查request latency確認SSD跟新版本有符合預期效果
  8. 然後把手邊的燒酌喝完去睡覺

喔對,為了確保中間不會出什麼意外,在這之前同樣的步驟有在測試叢集跑過一遍。