Forwarded from Newlearnerの自留地 (初学者 | newlearner.site)
#telegram #Search
🔍 为什么 Telegram 不能搜寻中文讯息
⭕️ 圈重点:
- Telegram 使用 SQLite 作为资料库
- fts 全文搜索将字串以 Tokenizer 切割成短语,分别取 Hash,寻找时与哈希表进行比对
- 标记生成器根据分离器、分隔符切割字串
- 分离器、分隔符之外的成分为「令牌」,有“大号*(字母),N *(数字)及Co(其他)”三种预设
- 中日韩文字属于 unicode CJK,绝大多数被识别为令牌
(╯﹏╰) 从而,汉字语汉字间没有任何分隔符,会被整串拿去哈希,从而导致搜寻无效。本文从代码的角度很好地说明了 Telegram 的中文消息搜索为何如此之烂
👨🏻💻 作者给了两个建议:
1️⃣ 手动在汉字间插入不可见的分离器
2️⃣ 写个客制化的 Tokenizer,即魔改 Telegram 客户端软件
❤️ 感谢群友分享此文,之前自留地也通过不同的思路整理了中文搜索方案,并认为目前的最优解是通过全局爬虫+数据库索引实现:Telegram 中文搜索方案探索
频道:@NewlearnerChannel
🔍 为什么 Telegram 不能搜寻中文讯息
⭕️ 圈重点:
- Telegram 使用 SQLite 作为资料库
- fts 全文搜索将字串以 Tokenizer 切割成短语,分别取 Hash,寻找时与哈希表进行比对
- 标记生成器根据分离器、分隔符切割字串
- 分离器、分隔符之外的成分为「令牌」,有“大号*(字母),N *(数字)及Co(其他)”三种预设
- 中日韩文字属于 unicode CJK,绝大多数被识别为令牌
(╯﹏╰) 从而,汉字语汉字间没有任何分隔符,会被整串拿去哈希,从而导致搜寻无效。本文从代码的角度很好地说明了 Telegram 的中文消息搜索为何如此之烂
👨🏻💻 作者给了两个建议:
1️⃣ 手动在汉字间插入不可见的分离器
2️⃣ 写个客制化的 Tokenizer,即魔改 Telegram 客户端软件
❤️ 感谢群友分享此文,之前自留地也通过不同的思路整理了中文搜索方案,并认为目前的最优解是通过全局爬虫+数据库索引实现:Telegram 中文搜索方案探索
频道:@NewlearnerChannel