电报app安裝_电报官网_电报安卓下载地址

Telegram 中文搜索解决方案 tg-search-lite

admin|
67

中文搜索解决方案 tg--in

擅长于非(如、、和)。我们制作了一个用于聊天的网页工具。使用的数据来自聊天,以 HTML 格式。

telegram 中文搜索解决方案 tg-search-lite

背景

官方翻译平台新增简体中文/繁体中文。

官方终于愿意稍微关注一下中文用户了,总体来说这是一件好事。因此感觉官方支持中文搜索指日可待了。

但现在要想在tg上搜索中文,还是得靠广大劳动人民的辛勤劳动和不懈的热情,比如有的群员打字带空格,大家也都见过,已经不奇怪了。

在官方没有提供数据导出工具之前(GDPR 出台之前),我做过一个中文搜索方案叫 tg-,可以搜索某个账号下所有可访问的数据。不过这个方案搜索范围(目前)比较小,只能搜索聊天导出的数据,所以取名 tg--lite。

相较于前作,本方案充分利用了官方的HTML导出格式(桌面客户端导出),更加人性化、简单易懂,方便广大民众使用。

使用

例如。

这是一个不断推送大量新消息的渠道,推送率有时远高于普通人的阅读率。

有些直接打开“Home.html”就可以正常运行,比如手头的64.08b(Win-64bit)

但是,CORS 确实很严格。对于 AJAX,您可以在本地打开服务器,但建议暂时禁用 CORS。例如,手头上的 67.0.3396.99 (32 位)

暂时关闭CORS的教程本地开启服务器非常简单,下载caddy,直接在文件夹里打开服务器,然后输入:2015/Home.html。

比如你已经安装了,在文件夹下打开-m http.,输入:8080/Home.html就可以了。

打开网页

然后你可以搜索

阐明

问:既然它是以 HTML 形式导出的,我们不能只使用 CTRL+F 吗?

A:如果聊天记录少于1000条,建议按CTRL+F

但是按照 tg 桌面导出格式,当一页(一个 html 文件)超过 1000 条消息时,超出的部分会分成下一页,比如第二页就放在 .html 中。一些大型团体导出几百页的情况并不罕见。这让 CTRL+F 很不方便。

对于其他可能的方法,请查看其他解决方案

因为加载了两个在线资源,所以需要网络连接,如果想离线使用,可以找一个动手能力强的同学帮你下载两个在线资源,改好路径,就可以离线使用了。

不需要

首次打开时会占用较高的CPU/内存,聊天记录越多,耗时越长,因为程序首次运行时需要加载并分析大量数据。

后续每次打开或者刷新都不会占用跟第一次一样的CPU/内存,因为还没有缓存功能,呵呵。

当我在自己的电脑上运行它时,运行速度就落后了。

我不知道为什么。我建议你使用运行。

我是 JS 初学者,这是我的第一篇 JS 作品。写得不好,请多包涵/指正。请 PR

规划思路/实施原则

由于官方方法的输出是HTML,因此精简版本只是使用前端方法完成。

JS 库和框架太多了,很烦,但是 () 原生的 API 又那么强大,因为不喜欢 npm 和 .json,原本打算不用任何库,结果发现确实很好用。

有了@的帮助,就不需要任何库了。

总体思路和一些细节实现参考了hexo-theme中内置的搜索插件。

加载数据和生成索引是我自己的想法:使用ajax将原始数据加载到临时的DOM中,然后解析DOM并输入生成搜索所需的结构化数据(索引)。

稍后添加

缺点/后续步骤

表现:

看起来非常耗性能。所以我建议不要搜索聊天记录太长的聊天。

:由于使用 fetch API 替换了 的 ajax,因此做出了许多改进

缓存:

我考虑过将索引缓存存储在内部。但是上限只有5M左右,不够用。

MDN 已经给出了一些针对小问题的建议,以后我会仔细看看。

如果容量还是不够,可以考虑做一个实现文件,不仅在本地目录生成索引文件(一般是json),还可以在后台作为静态web服务器运行,如果以后有重点就和老版本一样了。

我想我可以尝试在这个文件夹中保存一个 .json

排序方式:

例如tg中文版 ,如果您搜索两个单词,一条消息包含 1 个单词一次,另一条消息包含 2 个单词并且 1 个单词重复 3 次。

显然后者地位较高更为公平。

多重性:

将多个文件放入 ./data/ 并在聊天中搜索。

需要标明结果来自哪个聊天记录,对应的数据布局需要调整。

稍后添加

其他选择

0条大神的评论

发表评论