HEGGQUERY add_query (HEGGQUERY eggQuery, char* field, char* key) { HEGGQUERY new_query = NULL; if(!strcmp(field, "keywords")) { new_query = eggQuery_new_string("title", key,strlen(key),ANALYZER_CWSLEX); HEGGQUERY new_query_two = NULL; if(!strcmp(G->op, "search")) { new_query_two = eggQuery_new_string("content", key,strlen(key),ANALYZER_CWSLEX); } else { new_query_two = eggQuery_new_string("content_index", key,strlen(key),ANALYZER_CWSLEX); } new_query = eggQuery_or(new_query,new_query_two); } if(!strcmp(field, "category")) { new_query = eggQuery_new_string("category", key, strlen(key), NULL); /* if(!strcmp(G->op, "search")) { // char* key_with_space = addSpace(key,30); new_query = eggQuery_new_string("category", key, strlen(key), NULL); // free(key_with_space); } else { new_query = eggQuery_new_string("category", key, strlen(key), NULL); } */ } if(new_query != NULL) { if(eggQuery == NULL) { eggQuery = new_query; } else { eggQuery = eggQuery_and(eggQuery,new_query); } } return eggQuery; } /* ----- end of function get_queryadd_query ----- */
static HEGGQUERY getQuery() { char key[1000] = {0}; char fieldName[200] = ""; HEGGQUERY h1, h2; printf("fieldName: "); scanf("%s", fieldName); printf("key: "); scanf("%s", key); h1 = nextQuery(fieldName, key); while (1) { HEGGQUERY h2 = 0; int c; printf("logic? "); char bb[20] = ""; fgets(bb, sizeof(bb), stdin); fgets(bb, sizeof(bb), stdin); c = bb[0]; printf("-------- :%c\n",c); if (c == 'a' || c == 'A') { printf("FieldName: "); scanf("%s", fieldName); printf("key: "); scanf("%s", key); h2 = nextQuery(fieldName, key); h1 = eggQuery_and(h1, h2); } else if (c == 'o' || c == 'O') { printf("FieldName: "); scanf("%s", fieldName); printf("key: "); scanf("%s", key); h2 = nextQuery(fieldName, key); h1 = eggQuery_or(h1, h2); } else if (c == '-') { printf("FieldName: "); scanf("%s", fieldName); printf("key: "); scanf("%s", key); h2 = nextQuery(fieldName,key); h1 = eggQuery_minus(h1, h2); } else { break; } } return h1; }