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