{"id":15523497,"url":"https://github.com/andelf/rust-darts","last_synced_at":"2025-06-30T03:06:40.294Z","repository":{"id":57616148,"uuid":"67850734","full_name":"andelf/rust-darts","owner":"andelf","description":"Double Array Trie in Rust","archived":false,"fork":false,"pushed_at":"2019-07-07T15:06:42.000Z","size":19126,"stargazers_count":53,"open_issues_count":7,"forks_count":7,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-05-19T20:24:19.746Z","etag":null,"topics":["data-structures"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andelf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-09-10T04:25:44.000Z","updated_at":"2025-04-12T08:33:45.000Z","dependencies_parsed_at":"2022-08-27T07:31:22.783Z","dependency_job_id":null,"html_url":"https://github.com/andelf/rust-darts","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/andelf/rust-darts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andelf%2Frust-darts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andelf%2Frust-darts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andelf%2Frust-darts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andelf%2Frust-darts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andelf","download_url":"https://codeload.github.com/andelf/rust-darts/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andelf%2Frust-darts/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262702324,"owners_count":23350641,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-structures"],"created_at":"2024-10-02T10:45:30.047Z","updated_at":"2025-06-30T03:06:40.266Z","avatar_url":"https://github.com/andelf.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rust-darts: Double-Array Trie Rust implementation.\n\nThis library is in alpha state, PRs are welcomed. An optional Forward Maximum Matching Searcher is provided when enabled by features.\n\n[![Build Status](https://travis-ci.org/andelf/rust-darts.svg?branch=master)](https://travis-ci.org/andelf/rust-darts)\n[![codecov](https://codecov.io/gh/andelf/rust-darts/branch/master/graph/badge.svg)](https://codecov.io/gh/andelf/rust-darts)\n[![Crates.io](https://img.shields.io/crates/v/darts.svg)](https://crates.io/crates/darts)\n[![docs.rs](https://docs.rs/darts/badge.svg)](https://docs.rs/darts/)\n\n## Installation\n\nAdd it to your `Cargo.toml`:\n\n ```toml\n [dependencies]\n darts = \"0.1\"\n ```\n\nthen you are good to go. If you are using Rust 2015 you have to `extern crate darts` to your crate root as well.\n\n## Example\n\n```rust\nuse std::fs::File;\nuse darts::DoubleArrayTrie;\n\nfn main() {\n    let mut f = File::open(\"./priv/dict.big.bincode\").unwrap();\n    let da = DoubleArrayTrie::load(\u0026mut f).unwrap();\n    let string = \"中华人民共和国\";\n    let prefixes = da.common_prefix_search(string).map(|matches| {\n        matches\n            .iter()\n            .map(|(end_idx, v)| {\n                \u0026string[..end_idx]\n            })\n            .collect();\n    }).unwrap_or(vec![]);\n    assert_eq!(vec![\"中\", \"中华\", \"中华人民\", \"中华人民共和国\"], prefixes);\n}\n```\n\n```rust\nuse std::fs::File;\nuse darts::DoubleArrayTrie;\n\nfn main() {\n    let mut f = File::open(\"./priv/dict.big.bincode\").unwrap();\n    let da = DoubleArrayTrie::load(\u0026mut f).unwrap();\n    assert!(da.exact_match_search(\"东湖高新技术开发区\").is_some());\n}\n```\n\n## Enabling Additional Features\n\n* `searcher` feature enables searcher for maximum forward matcher\n* `serialization` feature enables saving and loading serialized `DoubleArrayTrie` data\n\n```toml\n[dependencies]\ndarts = { version = \"0.1\", features = [\"searcher\", \"serialization\"] }\n```\n\n## To Rebuild Dictionary\n\n```bash\n# It would take minutes, be patient.\ntime cargo test --all-features -- --nocapture --ignored test_dat_basic\n```\n\n## To run benchmark tests\n```bash\ncargo bench --all-features\n```\n\n## License\n\nThis work is released under the MIT license. A copy of the license is provided in the LICENSE file.\n\n## Reference\n\n- [hankcs/HanLP](https://github.com/hankcs/HanLP)\n- [Aho Corasick自动机结合DoubleArrayTrie极速多模式匹配](http://www.hankcs.com/program/algorithm/aho-corasick-double-array-trie.html)\n- [DoubleArrayTrie和AhoCorasickDoubleArrayTrie的实用性对比](http://www.hankcs.com/program/algorithm/double-array-trie-vs-aho-corasick-double-array-trie.html)\n- [Darts: Double-Array Trie System](http://chasen.org/~taku/software/darts/)\n- [An Implementation of Double-Array Trie](https://linux.thai.net/~thep/datrie/datrie.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandelf%2Frust-darts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandelf%2Frust-darts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandelf%2Frust-darts/lists"}