Telegram 是一款非常流行的即时通信软件,其客户端是自由及开放源代码软件,服务器端由专门的软件构成。用户可以通过 Telegram 互相交换加密与自毁消息,使用起来非常方便。通过部署按关键词搜索的机器人,Telegram 频道为用户带来了全新的操作体验,尤其是在寻找 IT 社群和自留地资源时更为高效。然而,目前并没有完美解决全平台群组和频道中文搜索问题的方案。本文将分析 Telegram 中文搜索的现状,并提出使用的相关技巧。
Telegram 的搜索逻辑是基于“单词”进行的,这里的“单词”并非我们常见的单词,而是 Telegram 独特的逻辑组成,前后可能包含空格和标点符号。这种特殊的搜索逻辑大大影响了中文用户的搜索体验。
举例: 输入单词 “Windows”,如果将其写成 “空格 Win dows 空格” 的形式,搜索结果中会单独找到 “Win” 和 “Dows” 两个不同的“单词”。 这表明 Telegram 的搜索逻辑对空白符和标点符号非常敏感。
由于中文句子中,字与字之间并没有空格,且符号间隔有限,因此在历史记录中搜索关键词变得困难。以下是中文和英文搜索逻辑的对比例子。
假设我们有以下两段话:
原句子:很多朋友们都非常喜欢 Telegram 电报这个软件,主要就是因为这个软件拥有强大的各种免费功能。
现句子:很多朋友都非常喜欢 Telegram 这个软件,主要就是因为这个 “空格 软件 空格” 拥有 “空格 强大的 空格” 各种免费功能。
可以看到,在第二段句子中,“强大的”一词前面加入了空格。因此,当我们搜索 “软件” 或 “强大的” 时,Telegram 可以准确找到对应段落;而在第一段句子中,由于缺少空格,搜索结果可能为空。
想搜索一首古诗如 “床前明月光,疑是地上霜”,如果要转发(forward),必须输入完整的 “床前明月光” 或 “疑是地上霜”,才能得到准确结果。这主要是因为中文输入过程中很少自带空格,而 Telegram 搜索逻辑对空格依赖较大。
英文句子中,每个单词之间都有自然的空格,因此 Telegram 的搜索效果会相对好很多。例如:
搜索 “Win” 时,Telegram 并不会返回 “Windows” 的结果。
但如果句子中已拆分为 “Win dows”,则可以分别找到两个关键词。
这也反映了 Telegram 搜索逻辑缺乏类似浏览器的智能“拆词”功能,导致搜索体验不够友好。
不仅仅是中文用户面临搜索困难,其他小语种用户也被 Telegram 的搜索逻辑深深影响。例如:
法语、德语等语言中存在连字符、特殊字符的单词,在 Telegram 中可能分裂为多个“单词”。
阿拉伯语或其他从右向左书写的语言也可能因特殊的字母连接形式导致搜索失败。
尽管 Telegram 的中文搜索存在局限,但我们可以通过一些技巧来优化使用体验:
在消息发送前,适当在关键词前后加入空格或标点符号,便于后续搜索。
利用 Telegram 机器人(如关键词搜索机器人)建立更智能的频道搜索机制。
定期整理频道内容,将关键消息置顶,避免依赖搜索功能。
熟悉 Telegram 频道的操作逻辑,尽量使用英文关键词提高搜索效率。
官方给出的 Telegram 中文搜索非常难用,已成为不可改变的事实。这个时候可以从 Telegram 搜索逻辑方面入手,或许能够给大家带来不一样的体验!以下几种方法可以有效改善搜索体验,效果显著。
在频道和群组聊天时,可以在关键词的前后安插空格。
为频道消息打 Tag 标签。
对英文句子,在前后安插空格。
通过这些操作,在搜索历史内容时,可以从“需要输入哪些关键词”转变为“发消息时标记了哪些关键词或 Tag”。这样可以降低搜索难度。
在实际操作过程中,许多用户将聊天中的 Tag 进行分类,并绘制成表格以方便管理。例如:
将 Tag 专门划分为功能类别,如“工具”、“教程”、“源码”等。
采用 Tag + 英文关键词 的方式,比如标记 “工具 Windows Update”,以提升检索效率。
随着消息数量增加,Tag 的效果可能会逐渐变弱,仅剩分类作用。此时可以更换其他标记方式,比如结合 机器人 实现更智能的索引。
Tag 数量庞大: 随着消息积累,用户难以记住所有 Tag,需要参考表格,增加了操作复杂度。
空格插入不便: 并非所有群组或频道主都会在聊天和编辑中始终插入空格。
个人优化有限: 单个用户的努力无法解决 Telegram 搜索逻辑的根本问题,仍需官方进行改进。
想要脱离 Telegram 搜索体系的用户需要找到更高效的方法,比如使用类似博客的内容整理体系。博客是一个公开的内容展示平台,可以像浏览器搜索关键词那样,无死角地检索内容,从而提升效率。
某些用户通过手动整理频道内容的方式,将实用技巧、软件工具、源码等内容收录到导航页中,采用标题加链接的形式分类。例如:
商用 Telegram 电报频道推送大量信息,如羊毛性新闻。
将这些信息分门别类整理到导航页中,简单分类后,用户可以快速搜索到需要的内容。
这种方式类似于浏览器的关键词搜索功能,尽管手动整理工作量较大,但能显著提升用户体验。
一些 Telegram 网站通过网页爬虫和搜索引擎优化提升了用户搜索体验,例如:
网页爬虫加搜索引擎的方案显著改善了搜索体验,但需要一定的技术支持。
如果希望在 Telegram 内部实现更高效的搜索,可以尝试搭建关键词搜索机器人。以下是一些热门的 GitHub 开源项目:
telegram-search:可按日期搜索的中文分词引擎机器人。
telegram-search-bot:Telegram 中文搜索复读机器人。
telegram-find-in-channel-bot:支持中文搜索的频道机器人。
这些机器人通过分词和关键词索引的方式,可以有效提升 Telegram 的内部搜索体验。
优点: 提供更智能的搜索结果,可以快速定位关键词相关的消息。
缺点: 搭建机器人需要一定技术门槛,且部分用户可能更倾向于 Telegram 内部的原生搜索。
部署 Telegram 搜索机器人(GitHub - EYHN/telegram-search)需要一定的技术基础,对于新手小白可能较为繁琐,但按照以下步骤操作可以顺利完成部署:
git clone https://github.com/EYHN/telegram-search.git
pip install -r requirements.txt
mkdir session
python main.py
# 建立 Swap(1G)
sysctl -w vm.max_map_count=262144
ES_JAVA_OPTS=-Xms512m -Xmx512m
docker-compose up -d
部署完成后,机器人将会实时抓取频道信息并通过 Elasticsearch 建立搜索引擎。需要注意的是,部署前电脑需要拥有一定的内存。如果需要修改结果展示的字数,可在 main.py 中找到相关代码进行修改,默认值为 15 个字符。
机器人使用 Lucene 查询语法,可以精准定位聊天中的日期和关键词。以下是具体的使用方法及示例:
示例:在聊天中查询含有“美物”(实际上是“美味的食物”)的消息。
直接输入 “美物”: 搜索结果非常庞大,系统会默认展示所有包含“美”和“物”的消息,导致信息量过多。
输入 “+美物”: 系统依然无法精准匹配“美物”,会罗列出所有包含这两个字符的消息。
输入 “+美 +物”: 此时系统会判定搜索内容必须包含“美”和“物”两个关键词,搜索范围和内容大大减少。
使用机器人搜索时,需熟悉查询语法规则,尤其是分词及关键词的逻辑输入方式。合理应用语法可以有效提升搜索效率。
为了改善 Telegram 的搜索体验,以下列出几种常见的方案及其特点:
方案
特点
优缺点
电报自带搜索
基于 Telegram 框架
不支持分类,按日期搜索,中文用户体验差。
Tag 与空格
消息标记方式
操作复杂,分类能力有限,搜索效率低。
自留地导航(博客)
手动整理内容
搜索精准,但需耗费大量人力维护。
Telegram 索引 Bot
基于 Telegram 框架
支持分类和关键词搜索,需学习语法和服务器成本。
Web 搜索引擎
基于外部浏览器
搜索精准,但依赖浏览器和站点收录。
对于中国用户及其他小语种用户,在 Telegram 尚未优化搜索逻辑之前,可以通过上述方案结合自身需求进行尝试。建议用户在熟悉机器人语法的同时,逐步优化个人使用习惯,以提升整体搜索体验。
个人用户: 可使用 Windows 客户端导出频道内容,将其放置到浏览器中进行搜索。
群主和频道主: 可尝试制作关键词回复机器人。触发关键词后,机器人自动发送相关内容或链接。虽然操作难度较大,但对于常用内容的检索效果显著。
通过合理应用这些方法,即便 Telegram 不支持中文分词,用户也可以显著改善搜索体验。