telegram怎么什么都搜不到

由于 LINE 大幅调涨其官方帐号推送讯息的价格,很多具有重要影响力的团体及个人渐渐从 LINE 转移至 Telegram,也让这个在台湾原属小众的通讯软体浮出水面,进入大众的视野。

然而,Telegram 对于中文的支持并不甚精良,尤其征采功能遇上汉字即与残废无异。以是,缘故毕竟是什么呢??让我们来渐渐抽丝剥茧吧

首先,我们看看 Telegram 焦点 td-lib 是怎样储存讯息的。这是 MessagesDb.cpp ,从 12 到 14 行我们可以知道 Telegram 使用 SQLite 作为资料库:

#include "td/db/SqliteConnectionSafe.h"
#include "td/db/SqliteDb.h"
#include "td/db/SqliteStatement.h"

接着,我们可以发现这个 database 中有不少 table,但是我们只体贴 messages_fts 这个 virtual table。那么,这个 fts 又是什么呢??

CREATE VIRTUAL TABLE IF NOT EXISTS messages_fts USING fts5(text, content='messages', content_rowid='search_id', tokenize = "unicode61 remove_diacritics 0 tokenchars '\a'")

原来, fts 实在是 full-text search ,也就是所谓的全文搜索,而 fts5 则是 SQLite 内建可以提供全文搜索的模组。

说到这里,先来打个岔谈谈 字串征采 。在高中演算法比赛中,除了质朴的暴力解外,最常见而广为人知的方法有两种:KMP 演算法与其他基于 hash 的演算法。前者是由资讯界史诗级传授 Donald E. Knuth 及 Pratt, Morris 于 1977 提出。

而 SQLite fts5 比较类似基于 hash 的演算法,他的做法约莫如下:

  1. 将字串以 tokenizer 切割成一段段的 phrase
  2. phrase 进行 hash 后存进 table
  3. 征采时也将征采字串以 tokenizer 切割成一段段的 phrase ,在 hash table 中进行征采

举例而言,讯息 qwert qaz qsc 在征采时只会分别匹配到 qwert qaz qsc 这三个字串,你征采单独的 q a er 都不会匹配到。

讯息内容
征采一个 phase,成功
征采单独 q,反而失败

那问题接着来了: tokenizer 根据什么切割??用以切割 phase 的字元,我们称之 separator or delimiter ,而剩下组成 phase 的字元称之 token 。进一步来说,依据 unicode 的种别,属于 L*(letter) N*(number) Co(other) 预设为 token ,其馀都被视为 separator

以是我们终于找到 Telegram 不能征采中文讯息的根本缘故了。原来,由于 unicode CJK (中日韩表意文字)绝大部分皆属于 Lo 种别,也就是说,汉字语汉字间没有任何 separator ,会被整串拿去 hash,从而导致征采无效。

征采整串 CJK 即成功,证明我们的推论

结语

不警惕 打了一堆空话呢,相信大家都知道 Telegram 不能征采中文讯息的缘故了。解决的方法我有想到两种,其一是手动在汉字间插入不可见的 separator ,另一种是写个客制化的 tokenizer

于此将我的一点肤见拿来分享作为抛砖引玉,盼望列位电神不吝指教。将来倘如有空我也非常盼望能为 Telegram 社群做出贡献。

Telegram(国内网友将其简称为TG,或电报)是一个私密性很高的群组交际软件,用户可以在自建的频道中相互交流和分享。不外,一些刚打仗Telegram的小伙伴大概会碰到这样的征象,方才注册好的新账号,登录进了TG后,通过搜索功能,无法搜索到任何频道,这种问题该怎样解决呢?履历宝(Jingyanpal.com)给大家提供一种大概的解决措施。

新注册的TG用户无法搜索到频道(channel),可以实验先创建一个自己的频道。详细方法是:点击程序左上角的三横线汉堡菜单,会调出左侧菜单栏。在菜单栏中选择“New Channel”(新频道)。按提示快速创建一个频道,名称可以自己任意定。如下图:

版权声明:如无特殊说明,本站全部文章均由履历宝( Jingyanpal.com )原创。本站欢迎少量文字引用,但请注明出处。任何网站或个人,未经授权,不得抄袭、转载、盗用本站内容,违者必究。



(图:TG电报无法查找频道的解决措施,出处:履历宝,本站域名:Jingyanpal.com)

建好新频道之后,再通過逞序左上角的搜索框,就可以根据你的重要字表现很多相关的结果了。留意本文介绍的方法,包括上面的截图都是基于Telegram桌面客户端的。假如你是在手机端碰到类似的新!注册用户无法搜索到频道的问题,相信也会有帮助。

别的,提示大家,假如你下载TG后,无法连接或注册、登录,很大概是由于网络缘故导致的,这时可以实验通过安全、可靠的 !VPN服务 进行连接,一样平常都能解决问题。


注:本文由

履历宝

(Jingyanpal.com)原创,最后更新时间为:

2020年11月07日 8:39:24 PM

。未经授权,严禁转载。


履历宝(Jingyanpal.com)的更多好文:

Telegram/电报群搜索,没有什么群搜索不到

Lucky Designer Official Channel 7月 18, 2020 460



本节目行运计划师官方网站荣誉出品

自定义搜索:https://www.luckydesigner.space/telegramsearchengine/
几个群导航:https://www.luckydesigner.space/sharetelegramgroupsguide/
telegram官方群:https://t.me/Luckydesignerspace
微信订阅号:行运计划师

众所周知,telegram原版只能机器地搜索到群组,并不能分类查找,这次和大家聊聊telegram群导航,没有什么群搜索不到,包括谷歌自定义搜索,几个群组搜索网站,telegram电报群建议频道和机器人,第三方客户端flychat等等 .

本文网址: http://www.1cm8858.com/d/202102531017_4760_4147127763/home