| | 61 | AV * call_search_main_c(char *query) |
| | 62 | { |
| | 63 | AV *retar; |
| | 64 | NmzResult hlist; |
| | 65 | char result[SEARCH_NAMAZU_FIELDS][BUFSIZE]; |
| | 66 | int i; |
| | 67 | status = 0; |
| | 68 | retar = newAV(); |
| | 69 | hlist = nmz_search(query); |
| | 70 | status = hlist.stat; |
| | 71 | for (i = 0; i < hlist.num; i ++) { |
| | 72 | SV *ohlist = perl_eval_pv("new Search::Namazu::Result", TRUE); |
| | 73 | dSP; |
| | 74 | nmz_get_field_data(hlist.data[i].idxid, hlist.data[i].docid, "uri", result[0]); |
| | 75 | nmz_get_field_data(hlist.data[i].idxid, hlist.data[i].docid, "summary", result[1]); |
| | 76 | nmz_get_field_data(hlist.data[i].idxid, hlist.data[i].docid, "title", result[2]); |
| | 77 | nmz_get_field_data(hlist.data[i].idxid, hlist.data[i].docid, "author", result[3]); |
| | 78 | nmz_get_field_data(hlist.data[i].idxid, hlist.data[i].docid, "size", result[4]); |
| | 79 | ENTER; |
| | 80 | SAVETMPS; |
| | 81 | PUSHMARK(SP); |
| | 82 | PUSHs(ohlist); |
| | 83 | PUSHs(sv_2mortal(newSViv(hlist.data[i].score))); |
| | 84 | PUSHs(sv_2mortal(newSVpv(result[0], strlen(result[0])))); |
| | 85 | PUSHs(sv_2mortal(newSViv(hlist.data[i].date))); |
| | 86 | PUSHs(sv_2mortal(newSViv(hlist.data[i].rank))); |
| | 87 | PUSHs(sv_2mortal(newSVpv(result[1], strlen(result[1])))); |
| | 88 | PUSHs(sv_2mortal(newSVpv(result[2], strlen(result[2])))); |
| | 89 | PUSHs(sv_2mortal(newSVpv(result[3], strlen(result[3])))); |
| | 90 | PUSHs(sv_2mortal(newSVpv(result[4], strlen(result[4])))); |
| | 91 | PUTBACK; |
| | 92 | perl_call_method("set", G_DISCARD); |
| | 93 | av_push(retar, ohlist); |
| | 94 | FREETMPS; |
| | 95 | LEAVE; |
| | 96 | } |
| | 97 | nmz_free_hlist(hlist); |
| | 98 | return retar; |
| | 99 | } |
| | 100 | |
| 81 | | retar = newAV(); |
| 82 | | hlist = nmz_search(cqstr); |
| 83 | | status = hlist.stat; |
| 84 | | for (i = 0; i < hlist.num; i ++) { |
| 85 | | SV *ohlist = perl_eval_pv("new Search::Namazu::Result", TRUE); |
| 86 | | dSP; |
| 87 | | nmz_get_field_data(hlist.data[i].idxid, hlist.data[i].docid, "uri", result[0]); |
| 88 | | nmz_get_field_data(hlist.data[i].idxid, hlist.data[i].docid, "summary", result[1]); |
| 89 | | nmz_get_field_data(hlist.data[i].idxid, hlist.data[i].docid, "title", result[2]); |
| 90 | | nmz_get_field_data(hlist.data[i].idxid, hlist.data[i].docid, "author", result[3]); |
| 91 | | nmz_get_field_data(hlist.data[i].idxid, hlist.data[i].docid, "size", result[4]); |
| 92 | | ENTER; |
| 93 | | SAVETMPS; |
| 94 | | PUSHMARK(SP); |
| 95 | | PUSHs(ohlist); |
| 96 | | PUSHs(sv_2mortal(newSViv(hlist.data[i].score))); |
| 97 | | PUSHs(sv_2mortal(newSVpv(result[0], strlen(result[0])))); |
| 98 | | PUSHs(sv_2mortal(newSViv(hlist.data[i].date))); |
| 99 | | PUSHs(sv_2mortal(newSViv(hlist.data[i].rank))); |
| 100 | | PUSHs(sv_2mortal(newSVpv(result[1], strlen(result[1])))); |
| 101 | | PUSHs(sv_2mortal(newSVpv(result[2], strlen(result[2])))); |
| 102 | | PUSHs(sv_2mortal(newSVpv(result[3], strlen(result[3])))); |
| 103 | | PUSHs(sv_2mortal(newSVpv(result[4], strlen(result[4])))); |
| 104 | | PUTBACK; |
| 105 | | perl_call_method("set", G_DISCARD); |
| 106 | | av_push(retar, ohlist); |
| 107 | | FREETMPS; |
| 108 | | LEAVE; |
| 109 | | } |
| 110 | | nmz_free_hlist(hlist); |
| | 118 | retar = call_search_main_c(cqstr); |