Crate libsimple

source ·
Expand description

§libsimple

Crate GitHub last commit GitHub issues GitHub pull requests GitHub

§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 files into directory. Only need to call this method once.
  • Only need to call once for each connection, but must call this function before using sql jieba_query.