Rujukan / Arkib & integrasi
Telegram · Carian penuh
Cari mesej yang disimpan mengikut bentuk kata, frasa tepat, domain dan @nama pengguna, padanan terbaik diutamakan, dengan indeks diikat kepada jurnal yang disahkan.
TgWitness / Dokumentasi · Siasatan
Analisis arkib · OCR tempatan dan transkripsi · Wiki
Pratinjau. Dalam Jurnal, pilih Padanan terbaik · bentuk kata di sebelah medan carian. Keputusan disusun mengikut BM25 dan memadankan bentuk lain bagi kata yang sama: перевод menemui переводом dan переводы, transfer menemui transfers, frasa Cina ditemui tanpa ruang. Terbaru dahulu · teks tepat mengekalkan carian subrentetan sebelumnya merentasi keseluruhan rekod.
Indeks adalah data terbitan. Ia dibina semula daripada jurnal yang disahkan, tidak pernah disahkan sendiri dan tidak pernah dieksport. Rekod asal tidak berubah.
Pada halaman ini
Sintaks carian#
| Tulis | Menemui |
|---|---|
перевод карта |
Rekod yang mengandungi kedua-dua perkataan, dalam apa jua bentuk |
"переводом на карту" |
Ungkapan tepat, dalam susunan ini |
бонус OR подарок |
Mana-mana perkataan |
перевод -казино |
Merekod tanpa perkataan yang dikecualikan |
example.com |
Domain dan subdomainnya, juga dalam pautan tersembunyi dan URL butang |
@username, t.me/username |
Sebutan dan pautan akaun, serta mesej yang dihantarnya |
#tag |
Tagar |
+79991234567, alamat dompet, alamat e-mel |
Nilai yang sama dalam teks atau pautan |
from:@username, from:123456 |
Mesej daripada penghantar tersebut |
chat:-1001234567890 |
Satu sembang; ia hanya boleh mengehadkan akses anda sendiri |
id:42 |
Versi yang disimpan bagi mesej 42 |
since:2026-01-01 until:2026-01-31 |
Tempoh pemerhatian; tarikh tanpa masa merangkumi sepanjang hari |
kind:edited |
Hanya suntingan (new, snapshot, edited, recovered) |
source:ocr, source:transcription, source:all |
Teks yang diiktiraf sebagai ganti, atau bersama, mesej |
Preposisi dan kata fungsi lain diabaikan apabila terdapat perkataan lain. Huruf yang kelihatan serupa yang dicampurkan ke dalam perkataan (huruf Latin a di dalam perkataan Sirilik), huruf lebar penuh dan huruf hiasan Unicode serta aksara tidak kelihatan dinormalisasikan.
Bahasa#
Bahasa dikesan bagi setiap rekod berdasarkan skrip dan hurufnya:
| Skrip | Padanan |
|---|---|
| Sirilik | Lemma Rusia dan Ukraine dengan pymorphy3. Tanpa kamus Ukraine pilihan, pemungot batang ringan Ukraine digunakan |
| Latin | Pemangkas stem English Snowball; diacritik diabaikan |
| Bahasa Cina, Jepun, Korea, Thai, Laos, Khmer, Myanmar | Pasangan aksara bertindih: mana-mana frasa ditemui tanpa ruang. Soalan Cina dipecahkan kepada perkataan menggunakan jieba |
| Skrip lain | Kata-kata tepat |
Kamus Ukraine (pymorphy3-dicts-uk) diedarkan di bawah GPL-3.0, jadi ia tidak dipasang secara lalai. Pasang ia dengan pip install "tgwitness[uk-dictionary]";
indeks mengesan penganalisis baru dan membina semula dirinya.
Di mana indeks berada#
| Mod | Penyimpanan | Gunakan |
|---|---|---|
| Pada cakera (laluan lalai) | search/fulltext.sqlite3 dalam direktori ruang kerja |
Arkib besar; tahan terhadap permulaan semula |
| Hanya dalam memori | Tiada apa-apa pada cakera; dibina semula setiap kali permulaan | Tiada salinan terbitan teks mesej pada cakera |
| Padam | Tiada indeks; yang terbaru dahulu · teks tepat kekal | Pemasangan minimum |
Pentadbir utama memilih mod di bawah Jurnal → Penapis → Indeks carian untuk setiap ruang kerja. TGWITNESS_FULLTEXT=disk|memory|off Menetapkan lalai untuk ruang kerja yang tiada pilihan sendiri. Menukar kepada memori atau dimatikan akan memadam fail tersebut.
Fail indeks mempunyai perlindungan yang sama seperti jurnal: ia terletak di direktori data peribadi. Ia tidak disulitkan, dan bukan sebahagian daripada sandaran atau salinan luar tapak.
Rekod baharu diindeks di latar belakang dalam beberapa saat; carian juga mengindeks timbunan rekod lama yang pendek terlebih dahulu, supaya rekod yang disimpan sebentar tadi dapat ditemui. Jurnal sedia ada diindeks selepas kemas kini tanpa menyekat panel; sehingga saat itu, keputusan merangkumi rekod yang telah diindeks dan jurnal memaparkan kemajuan. Membina semula indeks bermula semula daripada rekod pertama.
python -m tgwitness index status --data-dir data/live
python -m tgwitness index rebuild --data-dir data/live --json
rebuild perlu panel dihentikan (kod keluar 3 jika tidak). Dengan --json,
keluaran piawai hanya mengandungi keputusan; kemajuan dihantar ke ralat piawai.
Keputusan dan jurnal yang disahkan#
Indeks menyimpan nombor urutan dan hash rekod jurnal terakhir yang diliputinya dan menyemak keduanya dengan jurnal apabila ia dibuka. Jurnal yang diganti, dipulihkan atau disunting menyebabkan pembinaan semula. Setiap respons melaporkan kedudukan ini, dan setiap padanan dibaca semula daripada jurnal berterasima berdasarkan nombor urutannya: indeks menentukan rekod mana yang hendak dipaparkan dan dalam susunan apa, bukan kandungannya. Akses sembang diterapkan pada medan sembang jurnal itu sendiri, bukan pada kandungan indeks.
Teks yang diiktiraf#
OCR dan transkrip kekal dalam artifak yang disulitkan. Indeks mereka wujud hanya dalam memori dan dibina semula apabila tugas pengecaman selesai. Keputusan muncul pada
media.saved rekodnya, dilabel sebagai pengecaman mesin dengan enjin, model dan petikan; ia tidak pernah dipaparkan sebagai teks yang dihantar dalam Telegram. Indeks yang sama digunakan untuk Cari teks yang diiktiraf, yang masih juga mengpadankan subrentetan biasa.
Akses#
Akses skop sembang hanya menemui rekod daripada sembang anda, termasuk teks yang diiktiraf daripada lampirannya. chat: dan penapis lain hanya boleh menyempitkan set itu. Status indeks yang dipaparkan kepada akses berlingkup mengabaikan jumlah jurnal. Hanya pentadbir utama boleh menukar mod atau membina semula indeks.
Tanya arkib dan MCP#
Permintaan arkib mendapatkan sumbernya daripada indeks ini apabila ia lengkap: padanan terbaik merentasi sembang terpilih, dengan teks yang disimpan dikira sekali sahaja. Sehingga 24 sumber dihantar; teks panjang dipotong di sekitar padanan mereka dan ditandakan sebagai dipendekkan. Soalan mengenai perubahan terkini, versi simpanan satu mesej, dan carian semasa indeks masih dibina menggunakan pengambilan kronologi sebelumnya. Pratonton menunjukkan kaedah yang digunakan.
Klien MCP boleh memanggil search_messages dengan ranked=true dan halaman dengan
next_offsetSambungan berbeza menerima hanya sembang mereka.
Pemaginasi berperingkat merangkumi paling banyak 1,000 keputusan pertama, tanpa mengira saiz halaman. Sekat carian, sembang atau tempoh untuk menyemak padanan selanjutnya. Carian terbaru-dahulu menyusun mesej, keputusan OCR dan transkripsi sebelum memilih setiap halaman.
Kebergantungan#
| Pakej | Lesen | Mengapa |
|---|---|---|
| pymorphy3, pymorphy3-dicts-ru, DAWG2-Python | MIT | Lemma Rusia dan Ukraine; kamus dimuat secara tempatan |
| snowballstemmer | Klausul BSD-3 | Asas bahasa Inggeris, Python tulen |
| jieba | MIT | Segmentasi pertanyaan Cina, Python tulen (edaran sumber sahaja) |
| pymorphy3-dicts-uk (pilihan) | GPL-3.0 | Kamus Ukraine lengkap |
SQLite FTS5 dengan unicode61 penoken diperlukan; ia adalah sebahagian daripada SQLite dalam binaan Python semasa. Tanpa ia, carian padanan terbaik melaporkan bahawa ia tidak tersedia.
Penanda aras#
python tools/bench_fulltext.py --messages 1000000 --work <empty directory>mencipta jurnal berasingan deterministik yang mengandungi mesej campuran Rusia, Ukraine, Inggeris, Cina dan Jepun dengan pautan dan pemegang dalam 200 sembang, membina indeks dan mencatat masa carian tipikal (50 keputusan, median daripada 7 larian).
Diukur pada Windows 11, Intel Core i9-13900K, 128 GB RAM, Python 3.12.10, SQLite 3.49.1, data pada pemacu exFAT, penganalisis fulltext-v1+pymorphy3-ru+light-uk+snowball-en:
| Ukur | Keputusan |
|---|---|
| Jurnal yang ditandatangani | 1,000,000 mesej, 1.50 GiB, ditulis dalam 19 minit |
| Indeks binaan daripada jurnal | 71 s, kira-kira 14,141 mesej sesaat |
| Fail indeks | 58 MiB, 3.8% daripada jurnal |
| Cari sejurus selepas rekod baru | Median 8 ms, p95 9 ms |
| Carian substring sebelumnya, jurnal yang sama | перевод 3.2 s, 银行转账 2.6 s, verify-account.example 2.6 s |
| Cari | Rekod padanan | Padanan terbaik, median | p95 | Yang terbaru dahulu, median |
|---|---|---|---|---|
Kata biasa, bentuk kata: перевод |
134,403 | 82 ms | 85 ms | 7 ms |
Dua perkataan: оплата карта |
28,996 | 43 ms | 43 ms | 14 ms |
Kata jarang: розыгрыш подарок |
28,881 | 42 ms | 47 ms | 13 ms |
Frasa tepat: "переказ коштів на картку" |
tidak dikira | 35 ms | 36 ms | 6 ms |
Domain dengan subdomain: verify-account.example |
12,435 | 17 ms | 17 ms | 3 ms |
@nama pengguna: @support_desk_bot |
10,331 | 15 ms | 16 ms | 3 ms |
Bahasa Cina tanpa ruang: 银行转账 |
17,691 | 23 ms | 24 ms | 3 ms |
Jepun: リンク |
16,603 | 23 ms | 25 ms | 3 ms |
Akar bahasa Inggeris: withdrawal |
27,775 | 26 ms | 26 ms | 2 ms |
ATAU dan pengecualian: бонус OR подарок -казино |
268,034 | 190 ms | 193 ms | 19 ms |
Penapis sembang: chat:-1000000000007 перевод |
652 | 9 ms | 9 ms | 6 ms |
Penapis tempoh: since:2026-01-01 until:2026-01-31 выплата |
115,732 | 155 ms | 156 ms | 81 ms |
Sebuah frasa tepat diperiksa secara harfiah pada calon dalam susunan pangkat sehingga halaman penuh, jadi jumlahnya tidak dikira. Masa meningkat selari dengan bilangan rekod yang sepadan; mengehadkan sembang atau tempoh menjadikan carian luas lebih pantas. Korpus sintetik mengulangi perbendaharaan kata yang kecil, jadi perkataan biasa sepadan dengan lebih banyak rekod berbanding sembang sebenar.