code wiki / _hdl_build / nx_web_search_probe.nx
nx_web_search_probe.nx source
↩ module page · 35 lines · 2153 B
1// nx_web_search_probe.nx -- query the WEB scope (dp-web-pub-) directly via dss_search and print each hit's
2// stored url: value. PROVES per-feed-item retrieval: a search should return the specific ARTICLE URLs
3// (reddit.com/r/.../comments/...) indexed as their own docs, not just the homepage. usage: <term...>
4import "nx_docportal_search_seg.nx"
5import "nx_corpus_ingest.nx" // ci_mkurlkey / dss_prefix / ss_open / ss_hget
6const K_MAGIC_1024: i64 = 1024
7
8func sp(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
9func spn(v: i64) -> i64 { if v==0 { sys_write(1,"0" as *u8,1); return 0 } var m: i64=v; if m<0 { sys_write(1,"-" as *u8,1); m=0-m } let t: *u8=sys_mmap(24); var k: i64=0; while m>0 { t[k]=(48+(m%10)) as u8; m=m/10; k=k+1 } let o: *u8=sys_mmap(24); var q: i64=k-1; var x: i64=0; while q>=0 { o[x]=t[q]; x=x+1; q=q-1 } sys_write(1,o,x); return 0 }
10
11func main(argc: i64, argv: *i64) -> i64 {
12 if argc < 2 { sp("usage: nx_web_search_probe <term...>\n" as *u8); return 1 }
13 let q: *u8 = sys_mmap(K_MAGIC_1024); var qn: i64 = 0
14 var a: i64 = 1
15 while a < argc { let s: *u8 = argv[a] as *u8; var j: i64=0; while s[j]!=(0 as u8) { q[qn]=s[j]; qn=qn+1; j=j+1 } if a+1<argc { q[qn]=32 as u8; qn=qn+1 } a=a+1 }
16 q[qn] = 0 as u8
17 sp("=== web-scope search: \"" as *u8); sp(q); sp("\" ===\n" as *u8)
18 let cids: *i64 = sys_mmap(64*8) as *i64
19 let scores: *i64 = sys_mmap(64*8) as *i64
20 let n: i64 = dss_search("web" as *u8, q, qn, cids, scores, 30)
21 sp("hits=" as *u8); spn(n); sp("\n" as *u8)
22 let prefix: *u8 = sys_mmap(512); dss_prefix("web" as *u8, prefix)
23 let h: *i64 = ss_open(prefix)
24 let ukey: *u8 = sys_mmap(64); let pbox: *i64 = sys_mmap(16) as *i64; let lbox: *i64 = sys_mmap(16) as *i64
25 var i: i64 = 0
26 while i < n { if i < 12 {
27 sp(" #" as *u8); spn(i+1); sp(" score=" as *u8); spn(scores[i]); sp(" url=" as *u8)
28 ci_mkurlkey(cids[i], ukey)
29 if (h as i64) != 0 { if ss_hget(h, ukey, pbox, lbox) == 1 {
30 sys_write(1, pbox[0] as *u8, lbox[0])
31 } }
32 sp("\n" as *u8)
33 } i = i + 1 }
34 return 0
35}