Expand description
§libsimple
§Description
Rust bindings to simple, a SQLite3 fts5 tokenizer which supports Chinese and PinYin.
§Usage
Add this to your Cargo.toml:
[dependencies]
libsimple = "~0.2"
§Example
use anyhow::Result;
use tempfile::tempdir;
fn main() -> Result<()> {
libsimple::enable_auto_extension()?;
let dir = tempdir()?;
libsimple::release_dict(&dir)?;
let conn = rusqlite::Connection::open_in_memory()?;
libsimple::set_dict(&conn, &dir)?;
conn.execute_batch("
CREATE VIRTUAL TABLE d USING fts5(id, text, tokenize = 'simple');
INSERT INTO d (id, text) VALUES (1, '中华人民共和国国歌');
INSERT INTO d (id, text) VALUES (2, '周杰伦');
")?;
assert_eq!(1, conn
.query_row("SELECT id FROM d WHERE text MATCH jieba_query('中华国歌')", [], |row| row.get::<_, i64>(0))?
);
assert_eq!(2, conn
.query_row("SELECT id FROM d WHERE text MATCH simple_query('zhoujiel')", [], |row| row.get::<_, i64>(0))?
);
Ok(())
}§Note
To build this crate,
please make sure you have installed make and cmake.
This crate will clone the cppjieba from GitHub when you build, so make sure you have the network access.
§License
Licensed under MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
Modules§
- Raw FFI bindings to simple.
Functions§
- Enable sqlite3_simple_init() as an auto extension.
- release_dict
jiebaRelease dict files into directory. Only need to call this method once. - set_dict
jiebaOnly need to call once for each connection, but must call this function before using sqljieba_query.