front_max/
front_max.rs

1use char_trie::Trie;
2use std::fs::File;
3use std::io::{BufRead, BufReader};
4
5pub fn main() {
6    let mut trie = Trie::default();
7    let start = std::time::Instant::now();
8
9    for line in BufReader::new(File::open("dict/default.dic").unwrap()).lines() {
10        let line = line.unwrap();
11        let parts: Vec<&str> = line.split('\t').collect();
12        if parts.len() == 3 {
13            trie.insert(
14                parts[0],
15                (parts[1].to_string(), parts[2].parse::<i32>().unwrap()),
16            );
17        }
18    }
19
20    println!("load dict use {:?}", start.elapsed());
21
22    let file = std::fs::read_to_string("dict/big_text.txt").unwrap();
23
24    let start = std::time::Instant::now();
25    let mut len = 0;
26
27    file.lines().for_each(|line| {
28        let result: Vec<_> = trie.iter_max(line).map(|t| t.0).collect();
29        len += result.len();
30        println!("{:?}", result);
31    });
32
33    println!("text parse token:{} use {:?}", len, start.elapsed());
34}