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}