From 7289d581c2e08da22f99d46d742b3e992b8062c4 Mon Sep 17 00:00:00 2001 From: Silvan Calarco Date: Wed, 9 Oct 2013 13:24:10 +0200 Subject: [PATCH] distroquey: results order by relevance and some more improvements --- src/distroquery.c | 56 +++++++++++++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/src/distroquery.c b/src/distroquery.c index 5b8367c..df21354 100644 --- a/src/distroquery.c +++ b/src/distroquery.c @@ -154,13 +154,13 @@ void printInputForm() { ct = ct->next; } printf("");*/ - printf("devel "); - printf("milestone2 "); - printf("milestone1 "); - printf(" i586 "); - printf("x86_64 "); - printf("arm "); - printf("sources "); + printf("devel ", ajax_call); + printf("milestone2 ", ajax_call); + printf("milestone1 ", ajax_call); + printf(" i586 ", ajax_call); + printf("x86_64 ", ajax_call); + printf("arm ", ajax_call); + printf("sources ", ajax_call); printf("
"); /* ct = firstconfigtag; while (ct) { @@ -196,13 +196,16 @@ void printQueryData() { if ((search_i586 && !strcmp(query_repositories[i]->arch[a],"i586")) || (search_arm && !strcmp(query_repositories[i]->arch[a],"arm")) || (search_x86_64 && !strcmp(query_repositories[i]->arch[a],"x86_64"))) { - snprintf(sql, PATH_MAX, "SELECT * FROM packages_%s WHERE name LIKE '%%%s%%' OR summary LIKE '%%%s%%' OR description LIKE '%%%s%%'", query_repositories[i]->arch[a], query, query, query); + snprintf(sql, PATH_MAX, + "SELECT * FROM packages_%s WHERE name LIKE '%%%s%%' OR summary LIKE '%%%s%%' OR description LIKE '%%%s%%' " + "ORDER BY name = '%s' DESC, name LIKE '%s%%' DESC, name LIKE '%%%s%%' DESC", + query_repositories[i]->arch[a], query, query, query, query, query, query); if (query_repositories[i]->db && (sqlite3_prepare_v2((sqlite3*)query_repositories[i]->db, sql, strlen(sql), &statement, NULL) == SQLITE_OK)) { while (sqlite3_step(statement) == SQLITE_ROW) { numresults++; - printf("


%s
 " - "
%s

" + printf("


 %s 
 " + "
 %s 

" "%s %s-%s
%s
Group: %s", query_repositories[i]->arch[a], query_repositories[i]->tag, @@ -216,26 +219,26 @@ void printQueryData() { sqlite3_column_text(statement,8)); /* install */ - printf("
" +/* printf("
" "
" "" "
", sqlite3_column_text(statement,1), sqlite3_column_text(statement,6), - sqlite3_column_text(statement,1)); + sqlite3_column_text(statement,1));*/ /* download */ - printf("", + printf("", query_repositories[i]->download_prefix, query_repositories[i]->download_dir, sqlite3_column_text(statement,1), sqlite3_column_text(statement,4), sqlite3_column_text(statement,5)); /* details */ - printf("
" + printf(" ", + "\"repository=%s&package=%s&arch=%s\")' style=\"color:black\"> Details 
", query_repositories[i]->tag, sqlite3_column_text(statement,1), query_repositories[i]->arch[a]); @@ -249,14 +252,17 @@ void printQueryData() { } if (search_sources) { - snprintf(sql, PATH_MAX, "SELECT * FROM sources WHERE name LIKE '%%%s%%' OR summary LIKE '%%%s%%' OR description LIKE '%%%s%%'", query, query, query); + snprintf(sql, PATH_MAX, + "SELECT * FROM sources WHERE name LIKE '%%%s%%' OR summary LIKE '%%%s%%' OR description LIKE '%%%s%%' " + "ORDER BY name = '%s' DESC, name LIKE '%s%%' DESC, name LIKE '%%%s%%' DESC", + query, query, query, query, query, query); for (i = 0; query_repositories[i] != NULL; i++) { if (query_repositories[i]->db && (sqlite3_prepare_v2((sqlite3*)query_repositories[i]->db, sql, strlen(sql), &statement, NULL) == SQLITE_OK)) { while (sqlite3_step(statement) == SQLITE_ROW) { numresults++; - printf("

Source
 " - "
%s

" + printf("

 Source 
 " + "
 %s 

" "%s %s-%s
%s
Group: %s
License: %s
URL: %s

" "
%s

", query_repositories[i]->tag, @@ -392,10 +398,18 @@ void parse_request_variables(char *data) { ct = firstconfigtag; i = 0; + while (ct) { + if ((strstr(ct->tag, "devel") == ct->tag) && search_devel) query_repositories[i++] = ct; + ct = ct->next; + } + ct = firstconfigtag; + while (ct) { + if ((strstr(ct->tag, "milestone2") == ct->tag) && search_milestone2) query_repositories[i++] = ct; + ct = ct->next; + } + ct = firstconfigtag; while (ct) { if ((strstr(ct->tag, "milestone1") == ct->tag) && search_milestone1) query_repositories[i++] = ct; - else if ((strstr(ct->tag, "milestone2") == ct->tag) && search_milestone2) query_repositories[i++] = ct; - else if ((strstr(ct->tag, "devel") == ct->tag) && search_devel) query_repositories[i++] = ct; ct = ct->next; } query_repositories[i++] = NULL;