Index: ChangeLog =================================================================== --- ChangeLog (revision 743) +++ ChangeLog (working copy) @@ -1,3 +1,7 @@ +2007-08-05 Marko Anastasov + + * Implemented tracker_dbus_method_search_get_hit_count. + 2007-08-04 Patch from Marcus Fritzsch * fixed crasher in email indexing when parsing mimes Index: src/trackerd/tracker-dbus-search.c =================================================================== --- src/trackerd/tracker-dbus-search.c (revision 743) +++ src/trackerd/tracker-dbus-search.c (working copy) @@ -74,10 +74,41 @@ return; } - //tracker_log ("Executing detailed search with params %s, %s, %d, %d", service, str, offset, limit); + //tracker_log ("Executing GetHitCount with params %s, %s", service, str); - + char **array; + int service_array[1]; + int result; + DBusMessage *reply; + service_array[0] = tracker_get_id_for_service (service); + + SearchQuery *query = tracker_create_query (tracker->file_indexer, service_array, 1, 0, 999999); + + array = tracker_parse_text_into_array (str); + + char **pstr; + + for (pstr = array; *pstr; pstr++) { + tracker_add_query_word (query, *pstr, WordNormal); + } + + g_strfreev (array); + + result = tracker_get_hit_count (query); + + tracker_free_query (query); + + reply = dbus_message_new_method_return (rec->message); + + dbus_message_append_args (reply, + DBUS_TYPE_INT32, + &result, + DBUS_TYPE_INVALID); + + dbus_connection_send (rec->connection, reply, NULL); + + dbus_message_unref (reply); } Index: src/trackerd/tracker-indexer.c =================================================================== --- src/trackerd/tracker-indexer.c (revision 743) +++ src/trackerd/tracker-indexer.c (working copy) @@ -1076,3 +1076,25 @@ return (char ***) res; } + +int +tracker_get_hit_count (SearchQuery *query) +{ + if (tracker_shutdown) { + return 0; + } + + g_return_val_if_fail ((query && query->words), 0); + + int word_count = g_slist_length (query->words); + + if (word_count == 0) { + return 0; + } + + if (!tracker_indexer_get_hits (query)) { + return 0; + } else { + return query->hit_count; + } +}