Re: [Zeitgeist] [Merge] lp:~rainct/zeitgeist/fts-current-uri into lp:zeitgeist
Review: Needs Fixing The boolean terms we're adding to the document should also use current_uri. As for CompileEventFilterQuery, since the indexer no longer cares about logged uris, there's basically no distinction between them - therefore it should look at uri field and if that is unset try current_uri. -- https://code.launchpad.net/~rainct/zeitgeist/fts-current-uri/+merge/97655 Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist. ___ Mailing list: https://launchpad.net/~zeitgeist Post to : zeitgeist@lists.launchpad.net Unsubscribe : https://launchpad.net/~zeitgeist More help : https://help.launchpad.net/ListHelp
Re: [Zeitgeist] [Merge] lp:~rainct/zeitgeist/fts-current-uri into lp:zeitgeist
Review: Approve Awesome! -- https://code.launchpad.net/~rainct/zeitgeist/fts-current-uri/+merge/97655 Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist. ___ Mailing list: https://launchpad.net/~zeitgeist Post to : zeitgeist@lists.launchpad.net Unsubscribe : https://launchpad.net/~zeitgeist More help : https://help.launchpad.net/ListHelp
[Zeitgeist] [Merge] lp:~rainct/zeitgeist/fts-current-uri into lp:zeitgeist
The proposal to merge lp:~rainct/zeitgeist/fts-current-uri into lp:zeitgeist has been updated. Status: Needs review => Approved For more details, see: https://code.launchpad.net/~rainct/zeitgeist/fts-current-uri/+merge/97655 -- https://code.launchpad.net/~rainct/zeitgeist/fts-current-uri/+merge/97655 Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist. ___ Mailing list: https://launchpad.net/~zeitgeist Post to : zeitgeist@lists.launchpad.net Unsubscribe : https://launchpad.net/~zeitgeist More help : https://help.launchpad.net/ListHelp
[Zeitgeist] [Branch ~zeitgeist/zeitgeist/bluebird] Rev 428: FTS++: Log `current_uri' instead of `uri'
revno: 428 committer: Siegfried-Angel Gevatter Pujals branch nick: bluebird timestamp: Thu 2012-03-15 14:39:43 +0100 message: FTS++: Log `current_uri' instead of `uri' modified: extensions/fts++/indexer.cpp extensions/fts++/test/test-indexer.cpp -- lp:zeitgeist https://code.launchpad.net/~zeitgeist/zeitgeist/bluebird Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist. To unsubscribe from this branch go to https://code.launchpad.net/~zeitgeist/zeitgeist/bluebird/+edit-subscription === modified file 'extensions/fts++/indexer.cpp' --- extensions/fts++/indexer.cpp 2012-03-14 12:31:51 + +++ extensions/fts++/indexer.cpp 2012-03-15 13:39:43 + @@ -1259,7 +1259,6 @@ { try { -// FIXME: we need to special case MOVE_EVENTs const gchar *val; guint event_id = zeitgeist_event_get_id (event); g_return_if_fail (event_id > 0); @@ -1288,7 +1287,13 @@ ZeitgeistSubject *subject; subject = (ZeitgeistSubject*) g_ptr_array_index (subjects, i); - val = zeitgeist_subject_get_uri (subject); + // We use current_uri (vs. uri) where since we care about real stuff, + // not whatever happened some time ago. + // + // This will most likely still be the same as URI (unless something + // triggers a reindexation of the DB), but at least MOVE_EVENTS + // will have the updated URI. + val = zeitgeist_subject_get_current_uri (subject); if (val == NULL || val[0] == '\0') continue; std::string uri(val); === modified file 'extensions/fts++/test/test-indexer.cpp' --- extensions/fts++/test/test-indexer.cpp 2012-03-14 15:47:20 + +++ extensions/fts++/test/test-indexer.cpp 2012-03-15 13:39:43 + @@ -203,6 +203,27 @@ return event; } +static ZeitgeistEvent* create_test_event8 (void) +{ + ZeitgeistEvent *event = zeitgeist_event_new (); + ZeitgeistSubject *subject = zeitgeist_subject_new (); + + zeitgeist_subject_set_interpretation (subject, ZEITGEIST_NFO_PRESENTATION); + zeitgeist_subject_set_manifestation (subject, ZEITGEIST_NFO_FILE_DATA_OBJECT); + zeitgeist_subject_set_uri (subject, "file:///home/username/Documents/my_fabulous_presentation.pdf"); + zeitgeist_subject_set_current_uri (subject, "file:///home/username/Awesome.pdf"); + zeitgeist_subject_set_text (subject, NULL); + zeitgeist_subject_set_mimetype (subject, "application/pdf"); + + zeitgeist_event_set_interpretation (event, ZEITGEIST_ZG_MOVE_EVENT); + zeitgeist_event_set_manifestation (event, ZEITGEIST_ZG_USER_ACTIVITY); + zeitgeist_event_set_actor (event, "application://nautilus.desktop"); + zeitgeist_event_add_subject (event, subject); + + g_object_unref (subject); + return event; +} + // Steals the event, ref it if you want to keep it static guint index_event (Fixture *fix, ZeitgeistEvent *event) @@ -838,6 +859,36 @@ zeitgeist_event_get_id ((ZeitgeistEvent*) results->pdata[0])); } +static void +test_simple_move_event (Fixture *fix, gconstpointer data) +{ + guint matches; + guint event_id; + ZeitgeistEvent* event; + + // add test events to DBs + index_event (fix, create_test_event1 ()); + index_event (fix, create_test_event4 ()); + event_id = index_event (fix, create_test_event8 ()); + + GPtrArray *results = +zeitgeist_indexer_search (fix->indexer, + "awesome", + zeitgeist_time_range_new_anytime (), + g_ptr_array_new (), + 0, + 10, + ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, + &matches, + NULL); + + g_assert_cmpuint (matches, >, 0); + g_assert_cmpuint (results->len, ==, 1); + + event = (ZeitgeistEvent*) results->pdata[0]; + g_assert_cmpuint (zeitgeist_event_get_id (event), ==, event_id); +} + G_BEGIN_DECLS static void discard_message (const gchar *domain, @@ -881,6 +932,8 @@ setup, test_simple_relevancies_query, teardown); g_test_add ("/Zeitgeist/FTS/Indexer/RelevanciesSubject", Fixture, 0, setup, test_simple_relevancies_subject_query, teardown); + g_test_add ("/Zeitgeist/FTS/Indexer/MoveEvent", Fixture, 0, + setup, test_simple_move_event, teardown); // get rid of the "rebuilding index..." messages g_log_set_handler (NULL, G_LOG_LEVEL_MESSAGE, discard_message, NULL); ___ Mailing list: https://launchpad.net/~zeitgeist Post to : zeitgeist@lists.launchpad.net Unsubscribe : https://launchpad.net/~zeitgeist More help : https://help.launchpad.net/ListHelp
[Zeitgeist] [Branch ~zeitgeist/zeitgeist/bluebird] Rev 431: FTS++: more test stuff (add more asserts, extend {Most, Least}Recent tests,
revno: 431 committer: Siegfried-Angel Gevatter Pujals branch nick: bluebird timestamp: Fri 2012-03-16 19:41:52 +0100 message: FTS++: more test stuff (add more asserts, extend {Most,Least}Recent tests, introduce new helper function) modified: extensions/fts++/test/test-indexer.cpp -- lp:zeitgeist https://code.launchpad.net/~zeitgeist/zeitgeist/bluebird Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist. To unsubscribe from this branch go to https://code.launchpad.net/~zeitgeist/zeitgeist/bluebird/+edit-subscription === modified file 'extensions/fts++/test/test-indexer.cpp' --- extensions/fts++/test/test-indexer.cpp 2012-03-16 18:05:50 + +++ extensions/fts++/test/test-indexer.cpp 2012-03-16 18:41:52 + @@ -63,9 +63,11 @@ } static void -assert_nth_result_has_id (GPtrArray* results, int n, guint32 event_id) +assert_nth_result_has_id (GPtrArray* results, guint n, guint32 event_id) { + g_assert_cmpuint (n, <, results->len); ZeitgeistEvent *event = (ZeitgeistEvent*) results->pdata[n]; + g_assert (event); g_assert_cmpuint (zeitgeist_event_get_id (event), ==, event_id); } @@ -74,9 +76,13 @@ static void assert_nth_result_has_text (GPtrArray* results, int n, const char *text) { + g_assert_cmpuint (n, <, results->len); ZeitgeistEvent *event = (ZeitgeistEvent*) results->pdata[n]; + g_assert (event); + g_assert_cmpint (zeitgeist_event_num_subjects (event), ==, 1); ZeitgeistSubject *subject = (ZeitgeistSubject*) g_ptr_array_index (zeitgeist_event_get_subjects (event), 0); + g_assert (subject); g_assert_cmpstr (zeitgeist_subject_get_text (subject), ==, text); } @@ -275,6 +281,42 @@ return event_id; } +static GPtrArray* +search_simple (Fixture *fix, const char *text, GPtrArray *templates, +ZeitgeistResultType result_type, guint *matches) +{ + if (!templates) templates = g_ptr_array_new (); + return zeitgeist_indexer_search (fix->indexer, +text, +zeitgeist_time_range_new_anytime (), +templates, +0, // offset +10, // count +result_type, +matches, +NULL); +} + +static GPtrArray* +search_with_relevancies_simple (Fixture *fix, const char *text, +GPtrArray *templates, ZeitgeistResultType result_type, +gdouble **relevancies, gint *relevancies_size, guint *matches) +{ + if (!templates) templates = g_ptr_array_new (); + return zeitgeist_indexer_search_with_relevancies (fix->indexer, +text, +zeitgeist_time_range_new_anytime (), +templates, +ZEITGEIST_STORAGE_STATE_ANY, +0, // offset +10, // count +result_type, +relevancies, +relevancies_size, +matches, +NULL); +} + static void test_simple_query (Fixture *fix, gconstpointer data) { @@ -288,16 +330,8 @@ index_event (fix, create_test_event3 ()); index_event (fix, create_test_event4 ()); - GPtrArray *results = -zeitgeist_indexer_search (fix->indexer, - "text", - zeitgeist_time_range_new_anytime (), - g_ptr_array_new (), - 0, - 10, - ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, - &matches, - NULL); + GPtrArray *results = search_simple (fix, "text", NULL, + ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches); g_assert_cmpuint (matches, >, 0); g_assert_cmpuint (results->len, ==, 1); @@ -310,16 +344,9 @@ { guint matches; - GPtrArray *results = -zeitgeist_indexer_search (fix->indexer, - "NothingWillEverMatchThisMwhahahaha", - zeitgeist_time_range_new_anytime (), - g_ptr_array_new (), - 0, - 10, - ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, - &matches, - NULL); + GPtrArray *results = search_simple (fix, + "NothingWillEverMatchThisMwhahahaha", NULL, + ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches); g_assert_cmpuint (matches, ==, 0); g_assert_cmpuint (results->len, ==, 0); @@ -352,16 +379,8 @@ zeitgeist_event_set_interpretation (event, ZEITGEIST_NFO_DOCUMENT); g_ptr_array_add (filters, event); // steals ref - GPtrArray *results = -zeitgeist_indexer_search (
[Zeitgeist] [Branch ~zeitgeist/zeitgeist/bluebird] Rev 430: FTS++: some more test cases and add a couple utility functions
revno: 430 committer: Siegfried-Angel Gevatter Pujals branch nick: bluebird timestamp: Fri 2012-03-16 19:05:50 +0100 message: FTS++: some more test cases and add a couple utility functions modified: extensions/fts++/test/test-indexer.cpp -- lp:zeitgeist https://code.launchpad.net/~zeitgeist/zeitgeist/bluebird Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist. To unsubscribe from this branch go to https://code.launchpad.net/~zeitgeist/zeitgeist/bluebird/+edit-subscription === modified file 'extensions/fts++/test/test-indexer.cpp' --- extensions/fts++/test/test-indexer.cpp 2012-03-16 17:08:43 + +++ extensions/fts++/test/test-indexer.cpp 2012-03-16 18:05:50 + @@ -62,6 +62,24 @@ g_object_unref (fix->db); } +static void +assert_nth_result_has_id (GPtrArray* results, int n, guint32 event_id) +{ + ZeitgeistEvent *event = (ZeitgeistEvent*) results->pdata[n]; + g_assert_cmpuint (zeitgeist_event_get_id (event), ==, event_id); +} + +// This function only supports events with a single subject, +// since that's enough for the tests in this file. +static void +assert_nth_result_has_text (GPtrArray* results, int n, const char *text) +{ + ZeitgeistEvent *event = (ZeitgeistEvent*) results->pdata[n]; + ZeitgeistSubject *subject = (ZeitgeistSubject*) +g_ptr_array_index (zeitgeist_event_get_subjects (event), 0); + g_assert_cmpstr (zeitgeist_subject_get_text (subject), ==, text); +} + static ZeitgeistEvent* create_test_event1 (void) { ZeitgeistEvent *event = zeitgeist_event_new (); @@ -131,7 +149,7 @@ zeitgeist_subject_set_interpretation (subject, ZEITGEIST_NFO_PRESENTATION); zeitgeist_subject_set_manifestation (subject, ZEITGEIST_NFO_FILE_DATA_OBJECT); zeitgeist_subject_set_uri (subject, "file:///home/username/Documents/my_fabulous_presentation.pdf"); - zeitgeist_subject_set_text (subject, NULL); + zeitgeist_subject_set_text (subject, "test texts"); zeitgeist_subject_set_mimetype (subject, "application/pdf"); zeitgeist_event_set_interpretation (event, ZEITGEIST_ZG_MODIFY_EVENT); @@ -191,7 +209,7 @@ zeitgeist_subject_set_interpretation (subject, ZEITGEIST_NFO_PRESENTATION); zeitgeist_subject_set_manifestation (subject, ZEITGEIST_NFO_FILE_DATA_OBJECT); zeitgeist_subject_set_uri (subject, "file:///home/username/directory-with-dashes/and.dot/%C4%8C%20some-intl/CamelCasePresentation.pdf"); - zeitgeist_subject_set_text (subject, NULL); + zeitgeist_subject_set_text (subject, "some more texts"); zeitgeist_subject_set_mimetype (subject, "application/pdf"); zeitgeist_event_set_interpretation (event, ZEITGEIST_ZG_MODIFY_EVENT); @@ -212,7 +230,7 @@ zeitgeist_subject_set_manifestation (subject, ZEITGEIST_NFO_FILE_DATA_OBJECT); zeitgeist_subject_set_uri (subject, "file:///home/username/Documents/my_fabulous_presentation.pdf"); zeitgeist_subject_set_current_uri (subject, "file:///home/username/Awesome.pdf"); - zeitgeist_subject_set_text (subject, NULL); + zeitgeist_subject_set_text (subject, "some more textt about a presentation or something"); zeitgeist_subject_set_mimetype (subject, "application/pdf"); zeitgeist_event_set_interpretation (event, ZEITGEIST_ZG_MOVE_EVENT); @@ -283,13 +301,8 @@ g_assert_cmpuint (matches, >, 0); g_assert_cmpuint (results->len, ==, 1); - - event = (ZeitgeistEvent*) results->pdata[0]; - g_assert_cmpuint (zeitgeist_event_get_id (event), ==, event_id); - - ZeitgeistSubject *subject = (ZeitgeistSubject*) -g_ptr_array_index (zeitgeist_event_get_subjects (event), 0); - g_assert_cmpstr (zeitgeist_subject_get_text (subject), ==, "text"); + assert_nth_result_has_id (results, 0, event_id); + assert_nth_result_has_text (results, 0, "text"); } static void @@ -328,7 +341,6 @@ test_simple_with_filter (Fixture *fix, gconstpointer data) { guint matches; - guint event_id; ZeitgeistEvent* event; // add test events to DBs @@ -387,25 +399,19 @@ g_assert_cmpuint (matches, >, 0); g_assert_cmpuint (results->len, ==, 1); - - event = (ZeitgeistEvent*) results->pdata[0]; - g_assert_cmpuint (zeitgeist_event_get_id (event), ==, event_id); - - subject = (ZeitgeistSubject*) -g_ptr_array_index (zeitgeist_event_get_subjects (event), 0); - g_assert_cmpstr (zeitgeist_subject_get_text (subject), ==, "text"); + assert_nth_result_has_id (results, 0, event_id); + assert_nth_result_has_text (results, 0, "text"); } static void test_simple_negation (Fixture *fix, gconstpointer data) { guint matches; - guint event_id; ZeitgeistEvent* event; ZeitgeistSubject *subject; // add test events to DBs - event_id = index_event (fix, create_test_event1 ()); + index_event (fix, create_test_event1 ()); index_event (fix, create_test_event2 ()); GPtrArray *filters = g_ptr_array_new_with_free_func (g_object_unref); @@ -434,12 +440,11 @@ test_simple_noexpand (Fixture *fix, gconstpointer data) { guint matche
[Zeitgeist] [Branch ~zeitgeist/zeitgeist/bluebird] Rev 429: FTS++: Change to current_uri in some more places. Add random test cases.
revno: 429 committer: Siegfried-Angel Gevatter Pujals branch nick: bluebird timestamp: Fri 2012-03-16 18:08:43 +0100 message: FTS++: Change to current_uri in some more places. Add random test cases. modified: extensions/fts++/indexer.cpp extensions/fts++/test/test-indexer.cpp test/dbus/engine-test.py -- lp:zeitgeist https://code.launchpad.net/~zeitgeist/zeitgeist/bluebird Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist. To unsubscribe from this branch go to https://code.launchpad.net/~zeitgeist/zeitgeist/bluebird/+edit-subscription === modified file 'extensions/fts++/indexer.cpp' --- extensions/fts++/indexer.cpp 2012-03-15 13:39:43 + +++ extensions/fts++/indexer.cpp 2012-03-16 17:08:43 + @@ -262,7 +262,10 @@ for (unsigned j = 0; j < subjects->len; j++) { ZeitgeistSubject *subject = (ZeitgeistSubject*) g_ptr_array_index (subjects, j); + // For backwards compatibility, we still check URI val = zeitgeist_subject_get_uri (subject); + if (!val || val[0] == '\0') + val = zeitgeist_subject_get_current_uri (subject); if (val && val[0] != '\0') tmpl.push_back ("zgsu:" + StringUtils::MangleUri (val)); @@ -344,7 +347,7 @@ for (unsigned j = 0; j < subjects->len; j++) { ZeitgeistSubject *subject = (ZeitgeistSubject*) g_ptr_array_index (subjects, j); -val = zeitgeist_subject_get_uri (subject); +val = zeitgeist_subject_get_current_uri (subject); if (val && val[0] != '\0') doc.add_boolean_term (StringUtils::Truncate (FILTER_PREFIX_SUBJECT_URI + StringUtils::MangleUri (val))); @@ -928,12 +931,13 @@ if (subjects == NULL) continue; for (unsigned j = 0; j < subjects->len; j++) { -const gchar *subj_uri = zeitgeist_subject_get_uri ((ZeitgeistSubject*) subjects->pdata[j]); +const gchar *subj_uri = zeitgeist_subject_get_current_uri ( +(ZeitgeistSubject*) subjects->pdata[j]); if (subj_uri == NULL) continue; remapper[subj_uri] = event_id; ZeitgeistEvent *event = zeitgeist_event_new (); ZeitgeistSubject *subject = zeitgeist_subject_new (); -zeitgeist_subject_set_uri (subject, subj_uri); +zeitgeist_subject_set_current_uri (subject, subj_uri); zeitgeist_event_add_subject (event, subject); // FIXME: leaks? g_ptr_array_add (event_templates, event); } @@ -976,7 +980,8 @@ if (subjects == NULL) continue; for (unsigned j = 0; j < subjects->len; j++) { -const gchar *subj_uri = zeitgeist_subject_get_uri ((ZeitgeistSubject*) subjects->pdata[j]); +const gchar *subj_uri = zeitgeist_subject_get_current_uri ( +(ZeitgeistSubject*) subjects->pdata[j]); if (subj_uri == NULL) continue; relevancy_map[event_id] = relevancy_map[remapper[subj_uri]]; } === modified file 'extensions/fts++/test/test-indexer.cpp' --- extensions/fts++/test/test-indexer.cpp 2012-03-15 13:39:43 + +++ extensions/fts++/test/test-indexer.cpp 2012-03-16 17:08:43 + @@ -293,6 +293,38 @@ } static void +test_simple_query_empty_database (Fixture *fix, gconstpointer data) +{ + guint matches; + + GPtrArray *results = +zeitgeist_indexer_search (fix->indexer, + "NothingWillEverMatchThisMwhahahaha", + zeitgeist_time_range_new_anytime (), + g_ptr_array_new (), + 0, + 10, + ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, + &matches, + NULL); + + g_assert_cmpuint (matches, ==, 0); + g_assert_cmpuint (results->len, ==, 0); +} + +static void +test_simple_query_no_results (Fixture *fix, gconstpointer data) +{ + // add test events to DBs + index_event (fix, create_test_event1 ()); + index_event (fix, create_test_event2 ()); + index_event (fix, create_test_event3 ()); + index_event (fix, create_test_event4 ()); + + test_simple_query_empty_database (fix, data); +} + +static void test_simple_with_filter (Fixture *fix, gconstpointer data) { guint matches; @@ -889,6 +921,37 @@ g_assert_cmpuint (zeitgeist_event_get_id (event), ==, event_id); } +static void +test_simple_least_recent (Fixture *fix, gconstpointer data) +{ + guint matches; + guint event_id1, event_id2, event_id3, event_id4; + ZeitgeistEvent* event; + + // add test events to DBs + event_id1 = index_event (fix, create_test_event1 ()); + event_id2 = index_event (fix, create_test_event2 ()); + event_id3 = index_event (fix, create_test_event3 ()); + event_id4 = index_event (fix, create_test_event4 ()); + + GPtrArray *results = +zeitgeist_indexer_search (fix->indexer, + "", + zeitgeist_time_range_new_anytime (), +
[Zeitgeist] [Merge] lp:~rainct/zeitgeist/fts-current-uri into lp:zeitgeist
The proposal to merge lp:~rainct/zeitgeist/fts-current-uri into lp:zeitgeist has been updated. Status: Approved => Merged For more details, see: https://code.launchpad.net/~rainct/zeitgeist/fts-current-uri/+merge/97655 -- https://code.launchpad.net/~rainct/zeitgeist/fts-current-uri/+merge/97655 Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist. ___ Mailing list: https://launchpad.net/~zeitgeist Post to : zeitgeist@lists.launchpad.net Unsubscribe : https://launchpad.net/~zeitgeist More help : https://help.launchpad.net/ListHelp
[Zeitgeist] [Branch ~zeitgeist/zeitgeist/bluebird] Rev 432: FTS++: More test cases. These expose two bugs! ZOMG! :)
revno: 432 committer: Siegfried-Angel Gevatter Pujals branch nick: bluebird timestamp: Fri 2012-03-16 21:03:05 +0100 message: FTS++: More test cases. These expose two bugs! ZOMG! :) modified: extensions/fts++/indexer.cpp extensions/fts++/test/test-indexer.cpp -- lp:zeitgeist https://code.launchpad.net/~zeitgeist/zeitgeist/bluebird Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist. To unsubscribe from this branch go to https://code.launchpad.net/~zeitgeist/zeitgeist/bluebird/+edit-subscription === modified file 'extensions/fts++/indexer.cpp' --- extensions/fts++/indexer.cpp 2012-03-16 17:08:43 + +++ extensions/fts++/indexer.cpp 2012-03-16 20:03:05 + @@ -738,6 +738,7 @@ return query_string; } +// FIXME: this is missing the Storage State parameter GPtrArray* Indexer::Search (const gchar *search, ZeitgeistTimeRange *time_range, GPtrArray *templates, === modified file 'extensions/fts++/test/test-indexer.cpp' --- extensions/fts++/test/test-indexer.cpp 2012-03-16 18:41:52 + +++ extensions/fts++/test/test-indexer.cpp 2012-03-16 20:03:05 + @@ -248,6 +248,26 @@ return event; } +static ZeitgeistEvent* create_test_event_simple (const char *uri, const char *text) +{ + ZeitgeistEvent *event = zeitgeist_event_new (); + ZeitgeistSubject *subject = zeitgeist_subject_new (); + + zeitgeist_subject_set_interpretation (subject, ZEITGEIST_NFO_DOCUMENT); + zeitgeist_subject_set_manifestation (subject, ZEITGEIST_NFO_FILE_DATA_OBJECT); + zeitgeist_subject_set_uri (subject, uri); + zeitgeist_subject_set_text (subject, text); + zeitgeist_subject_set_mimetype (subject, "text/plain"); + + zeitgeist_event_set_interpretation (event, ZEITGEIST_ZG_ACCESS_EVENT); + zeitgeist_event_set_manifestation (event, ZEITGEIST_ZG_USER_ACTIVITY); + zeitgeist_event_set_actor (event, "application://random.desktop"); + zeitgeist_event_add_subject (event, subject); + + g_object_unref (subject); + return event; +} + // Steals the event, ref it if you want to keep it static guint index_event (Fixture *fix, ZeitgeistEvent *event) @@ -278,6 +298,10 @@ zeitgeist_indexer_process_task (fix->indexer); } + // sleep for 1 msec to make sure the next event will have a + // different timestamp + g_usleep (1000); + return event_id; } @@ -298,6 +322,23 @@ } static GPtrArray* +search_with_count (Fixture *fix, const char *text, GPtrArray *templates, +ZeitgeistResultType result_type, guint offset, guint count, +guint *matches) +{ + if (!templates) templates = g_ptr_array_new (); + return zeitgeist_indexer_search (fix->indexer, +text, +zeitgeist_time_range_new_anytime (), +templates, +offset, +count, +result_type, +matches, +NULL); +} + +static GPtrArray* search_with_relevancies_simple (Fixture *fix, const char *text, GPtrArray *templates, ZeitgeistResultType result_type, gdouble **relevancies, gint *relevancies_size, guint *matches) @@ -322,7 +363,6 @@ { guint matches; guint event_id; - ZeitgeistEvent* event; // add test events to DBs event_id = index_event (fix, create_test_event1 ()); @@ -365,6 +405,23 @@ } static void +test_simple_recognize_schemas (Fixture *fix, gconstpointer data) +{ + guint matches; + + // add test events to DBs + index_event (fix, create_test_event_simple ("file://a.ok", "getme1")); + index_event (fix, create_test_event_simple ("ubuntuone://a.bad", "getme2")); + + GPtrArray *results = search_simple (fix, "getme*", NULL, + ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches); + + g_assert_cmpuint (matches, >, 0); + g_assert_cmpuint (results->len, ==, 1); + assert_nth_result_has_text (results, 0, "getme1"); +} + +static void test_simple_with_filter (Fixture *fix, gconstpointer data) { guint matches; @@ -788,7 +845,7 @@ } static void -test_simple_most_recent (Fixture *fix, gconstpointer data) +test_query_most_recent (Fixture *fix, gconstpointer data) { guint matches; guint event_id1, event_id2, event_id3, event_id4; @@ -840,7 +897,7 @@ } static void -test_simple_least_recent (Fixture *fix, gconstpointer data) +test_query_least_recent (Fixture *fix, gconstpointer data) { guint matches; guint event_id1, event_id2, event_id3, event_id4; @@ -891,6 +948,95 @@ } } +static void +test_query_sort_order (Fixture *fix, gconstpointer data) +{ + guint matches; + guint event_id1, event_id2, event_id3, event_id4; + ZeitgeistEvent* event; + GPtrArray* results; + + // add test events to DBs + event_id1 = index_event (fix, create_test_event_simple ("file://uri1", "!sort")); + event_id2 = index_event (fix, create_test_e
[Zeitgeist] [Merge] lp:~rainct/zeitgeist/fts-sorting into lp:zeitgeist
Siegfried Gevatter has proposed merging lp:~rainct/zeitgeist/fts-sorting into lp:zeitgeist. Requested reviews: Michal Hruby (mhr3) For more details, see: https://code.launchpad.net/~rainct/zeitgeist/fts-sorting/+merge/97985 -- https://code.launchpad.net/~rainct/zeitgeist/fts-sorting/+merge/97985 Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist. === modified file 'extensions/fts++/indexer.cpp' --- extensions/fts++/indexer.cpp 2012-03-16 20:03:05 + +++ extensions/fts++/indexer.cpp 2012-03-16 20:45:24 + @@ -778,7 +778,10 @@ } else { - enquire->set_sort_by_value (VALUE_TIMESTAMP, true); + bool reversed_sort = not + zeitgeist_db_reader_sort_order_for_result_type_is_asc (zg_reader, + result_type); + enquire->set_sort_by_value (VALUE_TIMESTAMP, reversed_sort); } if (result_type == ZEITGEIST_RESULT_TYPE_MOST_RECENT_SUBJECTS || @@ -786,7 +789,20 @@ result_type == ZEITGEIST_RESULT_TYPE_MOST_POPULAR_SUBJECTS || result_type == ZEITGEIST_RESULT_TYPE_LEAST_POPULAR_SUBJECTS) { -enquire->set_collapse_key (VALUE_URI_HASH); + enquire->set_collapse_key (VALUE_URI_HASH); +} +else if (result_type == ZEITGEIST_RESULT_TYPE_MOST_RECENT_ORIGIN || +result_type == ZEITGEIST_RESULT_TYPE_LEAST_RECENT_ORIGIN || +result_type == ZEITGEIST_RESULT_TYPE_MOST_POPULAR_ORIGIN || +result_type == ZEITGEIST_RESULT_TYPE_LEAST_POPULAR_ORIGIN) +{ + // FIXME: not really correct but close :) + enquire->set_collapse_key (VALUE_URI_HASH); +} +else if (result_type == ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS || +result_type == ZEITGEIST_RESULT_TYPE_LEAST_RECENT_EVENTS) +{ + enquire->set_collapse_key (VALUE_EVENT_ID); } Xapian::Query q(query_parser->parse_query (query_string, QUERY_PARSER_FLAGS)); @@ -1096,12 +1112,9 @@ return NULL; } -bool reversed_sort = - result_type == ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS || - result_type == ZEITGEIST_RESULT_TYPE_MOST_RECENT_SUBJECTS || - result_type == ZEITGEIST_RESULT_TYPE_MOST_POPULAR_SUBJECTS || - result_type == ZEITGEIST_RESULT_TYPE_MOST_RECENT_ORIGIN || - result_type == ZEITGEIST_RESULT_TYPE_MOST_POPULAR_ORIGIN; +bool reversed_sort = not +zeitgeist_db_reader_sort_order_for_result_type_is_asc (zg_reader, + result_type); if (result_type == RELEVANCY_RESULT_TYPE) { === modified file 'src/db-reader.vala' --- src/db-reader.vala 2012-03-14 12:31:51 + +++ src/db-reader.vala 2012-03-16 20:45:24 + @@ -160,6 +160,56 @@ return results; } +/* + * Returns true if the results for the given result_type will be sorted + * ascendantly by date, false if they'll be sorted descendingly. + **/ +public bool sort_order_for_result_type_is_asc (uint result_type) +{ +switch (result_type) +{ +// FIXME: Why are LEAST_POPULAR_* using ASC? +case ResultType.LEAST_RECENT_EVENTS: +case ResultType.LEAST_RECENT_EVENT_ORIGIN: +case ResultType.LEAST_POPULAR_EVENT_ORIGIN: +case ResultType.LEAST_RECENT_SUBJECTS: +case ResultType.LEAST_POPULAR_SUBJECTS: +case ResultType.LEAST_RECENT_CURRENT_URI: +case ResultType.LEAST_POPULAR_CURRENT_URI: +case ResultType.LEAST_RECENT_ACTOR: +case ResultType.LEAST_POPULAR_ACTOR: +case ResultType.OLDEST_ACTOR: +case ResultType.LEAST_RECENT_ORIGIN: +case ResultType.LEAST_POPULAR_ORIGIN: +case ResultType.LEAST_RECENT_SUBJECT_INTERPRETATION: +case ResultType.LEAST_POPULAR_SUBJECT_INTERPRETATION: +case ResultType.LEAST_RECENT_MIMETYPE: +case ResultType.LEAST_POPULAR_MIMETYPE: +return true; + +case ResultType.MOST_RECENT_EVENTS: +case ResultType.MOST_RECENT_EVENT_ORIGIN: +case ResultType.MOST_POPULAR_EVENT_ORIGIN: +case ResultType.MOST_RECENT_SUBJECTS: +case ResultType.MOST_POPULAR_SUBJECTS: +case ResultType.MOST_RECENT_CURRENT_URI: +case ResultType.MOST_POPULAR_CURRENT_URI: +case ResultType.MOST_RECENT_ACTOR: +case ResultType.MOST_POPULAR_ACTOR: +case ResultType.MOST_RECENT_ORIGIN: +case ResultType.MOST_POPULAR_ORIGIN: +case ResultType.MOST_RECENT_SUBJECT_INTERPRETATION: +case ResultType.MOST_POPULAR_SUBJECT_INTERPRETATION: +case ResultType.MOST_RECENT_MIMETYPE: +case ResultType.MOST_POPULAR_MIMETYPE: +return false; + +default: +warning ("Unrecognized ResultType: %u", result_type); +return true; +} +}