@@ -5,8 +5,8 @@ extern crate napi_derive;
5
5
6
6
use jieba_rs:: { Jieba , KeywordExtract , TFIDF } ;
7
7
use napi:: {
8
- CallContext , Env , Error , JsBoolean , JsBuffer , JsNumber , JsString , JsUndefined , Module , Result ,
9
- Status ,
8
+ CallContext , Env , Error , JsBoolean , JsBuffer , JsNumber , JsObject , JsString , JsUndefined , Module ,
9
+ Result , Status ,
10
10
} ;
11
11
use once_cell:: sync:: OnceCell ;
12
12
use std:: convert:: TryInto ;
@@ -133,7 +133,7 @@ fn tag(ctx: CallContext) -> Result<JsString> {
133
133
}
134
134
135
135
#[ js_function( 3 ) ]
136
- fn extract ( ctx : CallContext ) -> Result < JsString > {
136
+ fn extract ( ctx : CallContext ) -> Result < JsObject > {
137
137
let sentence = ctx. get :: < JsBuffer > ( 0 ) ?;
138
138
let topn = ctx. get :: < JsNumber > ( 1 ) ?;
139
139
let allowed_pos = ctx
@@ -159,8 +159,16 @@ fn extract(ctx: CallContext) -> Result<JsString> {
159
159
topn,
160
160
allowed_pos,
161
161
) ;
162
+ let mut js_tags = ctx. env . create_array_with_length ( tags. len ( ) ) ?;
162
163
163
- ctx. env . create_string ( tags. join ( "," ) . as_str ( ) )
164
+ for ( index, t) in tags. iter ( ) . enumerate ( ) {
165
+ let mut tag_value = ctx. env . create_object ( ) ?;
166
+ tag_value. set_named_property ( "keyword" , ctx. env . create_string ( t. keyword . as_str ( ) ) ?) ?;
167
+ tag_value. set_named_property ( "weight" , ctx. env . create_double ( t. weight ) ?) ?;
168
+ js_tags. set_index ( index, tag_value) ?;
169
+ }
170
+
171
+ Ok ( js_tags)
164
172
}
165
173
166
174
#[ js_function]
0 commit comments