nx_lib_reindex.nx source
↩ module page · 31 lines · 1430 B
1// nx_lib_reindex.nx -- isolate the full-text index build over the durable 16K
2// catalog (data already stored). Reports where it stops.
3import "nx_syscalls.nx"
4import "nx_lib_index.nx"
5const K_MAGIC_1048576: i64 = 1048576
6
7func rx_puts(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 }
8func rx_putn(v: i64) -> i64 {
9 let bb: *u8 = sys_mmap(28); var m: i64 = v
10 let t: *u8 = sys_mmap(28); var k: i64 = 0
11 if m == 0 { t[0] = 48 as u8; k = 1 }
12 while m > 0 { t[k] = (48 + (m - (m/10)*10)) as u8; m = m / 10; k = k + 1 }
13 var i: i64 = 0; while i < k { bb[i] = t[k - 1 - i]; i = i + 1 } sys_write(1, bb, k); return 0
14}
15func rx_hits(out: *u8, n: i64) -> i64 {
16 if n <= 2 { rx_puts("0"); return 0 }
17 var c: i64 = 1; var i: i64 = 0
18 while i < n { if out[i] == 44 as u8 { c = c + 1 } i = i + 1 }
19 rx_putn(c); return 0
20}
21
22func main() -> i64 {
23 rx_puts("building full-text index over durable catalog...\n")
24 let nd: i64 = nx_lib_index_build()
25 rx_puts("index built OK, docs="); rx_putn(nd); rx_puts("\n")
26 let out: *u8 = sys_mmap(K_MAGIC_1048576)
27 rx_puts("q=Archaea -> "); let a: i64 = nx_lib_index_search("Archaea" as *u8, 7, out); rx_hits(out, a); rx_puts(" hits\n")
28 rx_puts("q=Acidilobaceae -> "); let b: i64 = nx_lib_index_search("Acidilobaceae" as *u8, 13, out); rx_hits(out, b); rx_puts(" hits\n")
29 rx_puts("done\n")
30 return 0
31}