def evaluate(bits):
     """
     Calculates an average of the F-Measure for every query that has recorded interactions
     """
     candidate = CandidateSolution(bits)
     f_measures = []
     #for query in SolrRepository.interactive_queries():
     for query in ["red lobster"]:
         results = SolrRepository.search(query, candidate.name_boost.value, candidate.description_boost.value)
         precision = CandidateSolution.calculate_precision(query, results)
         recall = CandidateSolution.calculate_recall(query, results)
         f_measures.append(CandidateSolution.f_measure(precision, recall))
     return sum(f_measures) / len(f_measures),
 def test_total_matches(self):
     expected = 2
     actual = SolrRepository.total_matches("seafood")
     self.assertEqual(actual, expected)
 def test_interactive_queries(self):
     expected = ["red lobster", "crabs", "seafood", "lobster"]
     results = SolrRepository.interactive_queries()
     self.assertItemsEqual(results, expected)
 def test_search_zero_boost_description(self):
     results = SolrRepository.search("red", 2, 0)
     self.assertEqual(len(results), 1)
     result = list(results)[0]
     self.assertEqual(result["name"], "Red Lobster")
 def test_search_zero_boost_name(self):
     results = SolrRepository.search("red", 0, 2)
     self.assertEqual(len(results), 1)
     result = list(results)[0]
     self.assertEqual(result["name"], "Joe's Crab Shack")
 def test_search(self):
     results = SolrRepository.search("crab shack", 10, 2)
     self.assertEqual(len(results), 1, "Expected one result")
     result = list(results)[0]
     self.assertEqual(result["name"], "Joe's Crab Shack")
 def calculate_recall(query, results):
     correct_matches = CandidateSolution.discounted_correct_matches(query, results)
     total_matches = float(SolrRepository.total_matches(query))
     missed_matches = total_matches - correct_matches
     return correct_matches / (correct_matches + missed_matches)
 def test_discounted_correct_matches(self):
     query = "red lobster"
     results = SolrRepository.search(query, 1, 1)
     actual = CandidateSolution.discounted_correct_matches(query, results)
     expected = 1. / math.log(3)
     self.assertEqual(actual, expected)