def test_ranked_scores_by_order_only_one_result(self): hitset = [1] ranker = ObelixSearchEngine('1', hitset) records, scores = ranker.rank() self.assertEquals(records, [1])
def test_large_data_set_of_records(self): records_to_test = range(0, 50000) s1 = ObelixSearchEngine("1", records_to_test, redis=self.redis) jrec, rg = 0, 10 self.assertEquals(records_to_test[jrec:jrec + rg], s1.rank()[0][jrec:jrec + rg])
def test_get_score_for_recid(self): recommendations = {1: 0.9, 2: 0.5} self.redis.set("obelix::recommendations::1", json.dumps(recommendations)) search_engine = ObelixSearchEngine(self.uid, self.hitset, redis=self.redis) recid1_score = search_engine._get_score(1, 0) recid2_score = search_engine._get_score(2, 1) self.assertGreater(recid1_score, recid2_score)
def testrank_records_obelix_using_ip_as_userid(self): user_info = {'uid': 1, 'remote_ip': "127.0.0.1", "uri": "testuri"} hitset = [1, 2, 3, 4, 5, 6, 7, 8, 9] uid = user_info['remote_ip'] ranker = ObelixSearchEngine(uid, hitset) records, scores = ranker.rank() self.assertEqual(hitset, records) ObelixSearchEngineLogger(self.redis).page_view(user_info, uid)
def test_large_dataset_find_hidden_treasure(self): records_to_test = range(0, 1000000) recommendations = {1: 0.9, 90000: 1.0, 430: 0.8} self.redis.set("obelix::recommendations::1", json.dumps(recommendations)) s1 = ObelixSearchEngine("1", records_to_test, redis=self.redis) s1records, s2scores = s1.rank() for key, val in recommendations.iteritems(): self.assertTrue(key in s1records)
def test_xlarge_data_set_of_records_and_a_few_recommendations(self): records_to_test = range(0, 1000000) recommendations = {} for recid in records_to_test[0:1000]: recommendations[recid] = random() self.redis.set("obelix::recommendations::1", json.dumps(recommendations)) s1 = ObelixSearchEngine("1", records_to_test, redis=self.redis) self.assertNotEquals(records_to_test[0:100], s1.rank()[0][0:100]) self.assertNotEquals(records_to_test[0:3], s1.rank()[0][0:3])
def test_different_users_get_same_results_with_same_recommendations(self): hitset = [1, 2, 3, 4, 5] self.redis.set("obelix::recommendations::1", json.dumps({1: 0.9, 2: 0.5})) self.redis.set("obelix::recommendations::2", json.dumps({1: 0.9, 2: 0.5})) s1 = ObelixSearchEngine("1", hitset, redis=self.redis) s2 = ObelixSearchEngine("2", hitset, redis=self.redis) s1_records, s1_scores = s1.rank() s2_records, s2_scores = s2.rank() self.assertEquals(s1_records, s2_records) self.assertEquals(s1_scores, s2_scores)
def test__rank_records_by_order_scores_sorted_largest_first(self): self.search_engine = ObelixSearchEngine(1, [1, 2, 3, 4, 5, 6, 7, 8, 9], self.redis) sorted_by_value = sorted(self.search_engine.ranked_scores_by_order, reverse=True) self.assertEqual(sorted_by_value, self.search_engine.ranked_scores_by_order)
def test_build_recommendations(self): recommendations = {1: 0.9, 2: 0.5} self.redis.set("obelix::recommendations::1", json.dumps(recommendations)) search_engine = ObelixSearchEngine(self.uid, self.hitset, redis=self.redis) self.assertEqual(recommendations, search_engine.recommendations)
def test_get_recommendations_two_recommendations(self): recommendations = {10: 0.2, 11: 0.1} recommendations_json = json.dumps(recommendations) self.redis.set("obelix::recommendations::1", recommendations_json) self.search_engine = ObelixSearchEngine(self.uid, self.hitset, redis=self.redis) self.assertEqual(recommendations, self.search_engine.recommendations)
def setUp(self): self.uid = 1 self.hitset = range(1, 30) self.redis = RedisMock() self.search_engine = ObelixSearchEngine(self.uid, self.hitset, redis=self.redis) self.redis.set("obelix::settings", json.dumps(self.search_engine.settings.dump()))
def test_different_users_get_same_results_with_same_recommendations(self): hitset = [1, 2, 3, 4, 5] self.redis.set("obelix::recommendations::1", json.dumps({ 1: 0.9, 2: 0.5 })) self.redis.set("obelix::recommendations::2", json.dumps({ 1: 0.9, 2: 0.5 })) s1 = ObelixSearchEngine("1", hitset, redis=self.redis) s2 = ObelixSearchEngine("2", hitset, redis=self.redis) s1_records, s1_scores = s1.rank() s2_records, s2_scores = s2.rank() self.assertEquals(s1_records, s2_records) self.assertEquals(s1_scores, s2_scores)