Donny2g / simple

支持中文和拼音的 sqlite3 fts5 扩展 (sqlite fts tokenizer)

Home Page:https://www.wangfenjin.com/posts/simple-tokenizer/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Simple tokenizer

simple 是一个支持中文和拼音的 sqlite3 fts5 拓展。它完整提供了 微信移动端的全文检索多音字问题解决方案 一文中的方案四,非常简单和高效地支持中文及拼音的搜索。

实现相关介绍:https://www.wangfenjin.com/posts/simple-tokenizer/

用法

  1. 首先需要确认你用到的 sqlite 版本支持 fts5 拓展,确认方法是:
select fts5(?1);

输出空不报错就说明没问题。如果不支持可以在项目根目录 make sqlite3-shell 本地编译一个用于测试。

  1. .load libsimple 加载 so 文件

然后就可以使用了,具体的例子可以参考 test.sql

开发

编译相关

使用支持 c++11 以上的编译器编译

  • make libsimple.so 打包扩展
  • make sqlite3-shell 编译测试用的 sqlite3
  • make test 运行 test.sql

代码

  • src/entry 入口文件,注册 sqlite tokenizer 和函数
  • src/simple_tokenizer 分词器实现
  • src/simple_highlight 高亮函数,基于内置的高亮函数改的,让命中的相邻单词连续高亮
  • src/pinyin 中文转拼音以及拼音拆 query 的实现

TODO

  • 加一些代码注释
  • 添加 CI/CD 自动出各平台的包
  • 添加 Java 和 Swift 使用的例子,方便在移动端使用
  • 部分参数可配,比如拼音文件的路径
  • 减少依赖,减小 so 的大小
  • 给出性能数据

About

支持中文和拼音的 sqlite3 fts5 扩展 (sqlite fts tokenizer)

https://www.wangfenjin.com/posts/simple-tokenizer/

License:MIT License


Languages

Language:C++ 65.0%Language:C 29.3%Language:Makefile 5.6%