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(())
}

§License

Licensed under MIT license (LICENSE 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.