Forbedring af søgemulighederne for kinesiske beskeder i Telegram
Konklusion
For at forbedre søgeresultaterne for kinesiske beskeder i Telegram kan man manuelt indsætte usynlige adskillere eller udvikle en brugerdefineret Tokenizer. Derudover kan brug af AI-teknologi til semantisk søgning også markant øge søgenøjagtigheden.
Nøglepunkter
- Telegram-database: Telegram bruger SQLite som sin database.
- Fuldtekstsøgningsmekanisme: Telegrams fuldtekstsøgningsfunktion bruger en Tokenizer til at opdele strenge i fraser, generere hash-værdier og sammenligne dem med en hashtabel under søgning.
- Token-generator: Token-generatoren er afhængig af separatorer og adskillere for at opdele strenge.
- Token-definition: Indhold uden for separatorer og adskillere betragtes som en "token", herunder tre typer: store bogstaver (*), tal (N) og andre tegn (Co).
- CJK-tegnbehandling: Kinesiske, japanske og koreanske tegn (CJK) genkendes for det meste som tokens i Unicode CJK-området.
Da der ikke er adskillere mellem kinesiske tegn, hasher Telegram hele strengen af kinesiske tegn, hvilket resulterer i dårlige søgeresultater. Denne artikel udforsker dybdegående begrænsningerne ved søgning i kinesiske beskeder i Telegram ud fra et kodeperspektiv.
Forbedringsforslag
- Manuel indsættelse af adskillere: Tilføj manuelt usynlige adskillere mellem kinesiske tegn for at forbedre søgeresultaterne.
- Brugerdefineret Tokenizer: Udvikl en brugerdefineret Tokenizer og modificer Telegram-klienten for at forbedre søgefunktionaliteten.
AI-semantisk søgning
Ud over traditionelle søgemetoder tilbyder introduktionen af AI en bedre løsning for semantisk søgning. Projektet telegram-search anvender indlejringsmodeller, hvilket gør det muligt for brugere at finde det ønskede indhold, selv uden nøjagtigt matchende søgeord. For eksempel kan indtastning af "昨晚吃饭的那个人" ("personen der spiste i går aftes") søge efter "昨天晚上和我们一起吃饭的男的" ("manden der spiste med os i går aftes").
Med ovenstående metoder kan søgeoplevelsen for kinesiske beskeder i Telegram forbedres markant.