提升 Telegram 中的中文訊息搜尋能力
結論
要改善 Telegram 中中文訊息的搜尋效果,可以透過手動插入不可見分隔符號或開發自訂的 Tokenizer 來達成。此外,利用 AI 技術進行語意搜尋也能顯著提升搜尋準確性。
關鍵點
- Telegram 資料庫:Telegram 使用 SQLite 作為其資料庫。
- 全文搜尋機制:Telegram 的全文搜尋功能透過 Tokenizer 將字串切割成詞彙,並產生雜湊值,搜尋時與雜湊表進行比對。
- 標記產生器:標記產生器仰賴分離器和分隔符號來切割字串。
- 標記定義:分離器和分隔符號之外的內容被視為「標記」,包括大寫字母(*)、數字(N)和其他字元(Co)三種類型。
- CJK 字元處理:中日韓字元屬於 Unicode CJK 大多被辨識為標記。
由於漢字之間沒有分隔符號,Telegram 會將整串漢字進行雜湊處理,導致搜尋效果不佳。本文從程式碼角度深入探討了 Telegram 中文訊息搜尋的局限性。
改進建議
- 手動插入分隔符號:在漢字之間手動添加不可見分隔符號,以提升搜尋效果。
- 自訂 Tokenizer:開發一個自訂的 Tokenizer,修改 Telegram 用戶端以強化搜尋功能。
AI 語意搜尋
除了傳統搜尋方法,AI 的導入為語意搜尋提供了更好的解決方案。專案 telegram-search 使用了嵌入模型,使得即使沒有精確匹配的關鍵字,使用者也能找到所需內容。例如,輸入「昨晚吃飯的那個人」也能搜尋到「昨天晚上和我們一起吃飯的男的」。
透過以上方法,可以顯著提升 Telegram 中中文訊息的搜尋體驗。