提升 Telegram 中的中文消息搜索能力
结论
要改善 Telegram 中中文消息的搜索效果,可以通过手动插入不可见分隔符或开发自定义 Tokenizer 来实现。此外,利用 AI 技术进行语义搜索也能显著提高搜索准确性。
关键点
- Telegram 数据库:Telegram 使用 SQLite 作为其数据库。
- 全文搜索机制:Telegram 的全文搜索功能通过 Tokenizer 将字符串切割成短语,并生成哈希值,搜索时与哈希表进行比对。
- 标记生成器:标记生成器依赖于分离器和分隔符来切割字符串。
- 令牌定义:分离器和分隔符之外的内容被视为“令牌”,包括大写字母(*)、数字(N)和其他字符(Co)三种类型。
- CJK 字符处理:中日韩字符属于 Unicode CJK 大多数被识别为令牌。
由于汉字之间没有分隔符,Telegram 将整串汉字进行哈希处理,导致搜索效果不佳。本文从代码角度深入探讨了 Telegram 中文消息搜索的局限性。
改进建议
- 手动插入分隔符:在汉字之间手动添加不可见分隔符,以提高搜索效果。
- 定制 Tokenizer:开发一个自定义的 Tokenizer,修改 Telegram 客户端以增强搜索功能。
AI 语义搜索
除了传统搜索方法,AI 的引入为语义搜索提供了更好的解决方案。项目 telegram-search 使用了嵌入模型,使得即使没有准确匹配的关键词,用户也能找到所需内容。例如,输入“昨晚吃饭的那个人”可以搜索到“昨天晚上和我们一起吃饭的男的”。
通过以上方法,可以显著提升 Telegram 中中文消息的搜索体验。