Add friso api demo and add the lua binding framework

This commit is contained in:
lionsoul 2020-02-20 11:48:10 +08:00
parent 0f39d7dc18
commit 34f1f30431
3 changed files with 63 additions and 15 deletions

View File

@ -98,20 +98,6 @@ make
# Friso插件安装
Friso目前提供了对php5, php7, ocaml, lua的分词插件
语言 | binding | 作者 | 状态
:-: | :-: | :-: | :-:
php | [php5-binding](binding/php5) | dongyado<dongyado@gmail.com> | 已完成
php | [php7-binding](binding/php7) | dongyado<dongyado@gmail.com> | 已完成
ocaml | [ocaml-binding](binding/ocaml) | https://github.com/kandu | 已完成
sphinx | [sphinx-binding](binding/sphinx) | lionsoul<chenxin619315@gmail.com> | 开发中
lua | [lua-binding](binding/lua) | lionsoul<chenxin619315@gmail.com> | 开发中
# Friso配置
Friso 要做的配置工作很简单,找到 friso.ini 配置文件, 使用文本编辑器打开即可
@ -196,6 +182,67 @@ friso.mode = 2
# Friso插件
Friso目前提供了对php5, php7, ocaml, lua的分词插件
语言 | binding | 作者 | 状态
:-: | :-: | :-: | :-:
php | [php5-binding](binding/php5) | dongyado<dongyado@gmail.com> | 已完成
php | [php7-binding](binding/php7) | dongyado<dongyado@gmail.com> | 已完成
ocaml | [ocaml-binding](binding/ocaml) | https://github.com/kandu | 已完成
sphinx | [sphinx-binding](binding/sphinx) | lionsoul<chenxin619315@gmail.com> | 开发中
lua | [lua-binding](binding/lua) | lionsoul<chenxin619315@gmail.com> | 开发中
# Friso分词接口
### 一个完整的demo:
```c
/* 第一步:申明三个对象 */
friso_t friso; /* Friso 分词对象 */
friso_config_t config; /* Friso 配置对象 */
friso_task_t task; /* Friso 任务对象 */
/* 第二步:初始化相应的对象 */
friso = friso_new();
config = friso_new_config();
task = friso_new_task();
/* 从friso.ini配置文件中初始化 friso */
if (friso_init_from_ifile(friso, config, "friso.ini文件地址") != 1) {
/* friso 初始化失败 */
}
/* 第三步:设置分词内容() */
friso_set_text(task, "分词的文本");
/* 第四步:获取分词内容 */
while (config->next_token(friso, config, task) != NULL) {
/*
task存储了分词的结果
task->token->word: 词条内容
task->token->offset: 词条在原始文本的offset
task->token->length: 词条的长度(字节数)
task->token->rlen: 词条的真正字节数(Friso转换后的长度-字节数)
*/
printf("%s ", task->token->word);
}
/* 第五步:释放对象 */
friso_free_task(task);
friso_free_config(config);
friso_free(friso);
```
### 备注:
1. 第三步和第四步可以反复调用使用friso_set_setx重置分词内容即可。
2. 对于多线程环境不同线程共享friso和config对象需要分别初始化task使用对象。
# 相关附录
### 1参考文献

1
binding/lua/README.md Normal file
View File

@ -0,0 +1 @@
lua binding for friso coming soon ...

View File

@ -27,7 +27,7 @@ break;
println("| Friso - a Chinese word segmentation writen by c. |"); \
println("| bug report email - chenxin619315@gmail.com. |"); \
println("| or: visit https://github.com/lionsoul2014/friso. |"); \
println("| java edition for https://github.com/lionsoul2014/jcseg |"); \
println("| java version for https://github.com/lionsoul2014/jcseg |"); \
println("| type 'quit' to exit the program. |"); \
println("+---------------------------------------------------------------+");