1 #include <stdio.h>
2 #include <string.h>
3 #include <stdlib.h>
4 #include "myisenna.h"
5
6 int
main(int argc,char ** argv)7 main(int argc, char **argv)
8 {
9 int i, score;
10 myis_id id;
11 myis_table *table;
12 myis_index *index;
13 myis_cursor *cursor;
14 myis_column *column;
15 char buff[65536];
16 sen_index *sen;
17 if (argc < 5) {
18 fputs("usage: test indexname keynumber colnumber querystring \n", stderr);
19 return -1;
20 }
21 myis_init();
22 table = myis_table_open(argv[1]);
23 cursor = myis_cursor_open(table);
24 sen = myis_table_fti(table, atoi(argv[2]));
25 index = myis_table_index(table, atoi(argv[2]));
26 column = myis_table_column(table, atoi(argv[3]));
27 printf("key='%s' (%s)\n", myis_index_name(index), sen ? "fulltext" : "btree");
28
29 if (sen) {
30 sen_records *records = sen_index_sel(sen, argv[4]);
31 if (records) {
32 printf("nhits=%d\n", sen_records_nhits(records));
33 sen_records_sort(records, 10, NULL);
34 printf("%8s: %s\n", "score", myis_column_name(column));
35 while (sen_records_next(records, &id, sizeof(myis_id), &score)) {
36 i = myis_cursor_rrnd(cursor, id);
37 myis_column_val_str(column, cursor, buff, 65536);
38 printf("%8d: %s\n", score, buff);
39 }
40 sen_records_close(records);
41 }
42 } else {
43 int len = strlen(argv[4]);
44 unsigned short *lenp = (unsigned short *)buff;
45 if (len > 65535) { len = 65535; }
46 *lenp = (unsigned short) len;
47 memcpy(buff + 2, argv[4], len);
48 int r = myis_index_rkey(index, cursor, buff, len + 2, MYIS_KEY_OR_NEXT);
49 // int r = myis_index_rfirst(index, cursor);
50
51 printf("r=%d (%s)\n", r, argv[4]);
52 for (i = 0; i < 10; i++) {
53 r = myis_cursor_next(cursor);
54 myis_column_val_str(column, cursor, buff, 65536);
55 printf("%d %8d: %s\n", r, i, buff);
56 }
57 }
58
59 myis_cursor_close(cursor);
60 myis_table_close(table);
61 return 0;
62 }
63