From 72134e096b1c07e2d87cd971b810363fe83e6c31 Mon Sep 17 00:00:00 2001 From: David Sauve Date: Sat, 5 Dec 2009 10:43:52 -0500 Subject: [PATCH] Query facets working again and reworked narrow to take a query_string instead of xapian.Query. This should be easier to use. --- tests/xapian_tests/tests/xapian_backend.py | 20 ++++++++++---------- xapian_backend.py | 8 +++++--- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/tests/xapian_tests/tests/xapian_backend.py b/tests/xapian_tests/tests/xapian_backend.py index cd476af..377fa83 100644 --- a/tests/xapian_tests/tests/xapian_backend.py +++ b/tests/xapian_tests/tests/xapian_backend.py @@ -220,21 +220,21 @@ class XapianSearchBackendTestCase(TestCase): ('2009-02-01T00:00:00', 0) ]) - # def test_query_facets(self): - # self.backend.update(self.index, self.sample_objs) - # self.assertEqual(len(self.xapian_search('')), 3) - # - # self.assertEqual(self.backend.search(xapian.Query(), query_facets={'name': 'da*', {'hits': 0, 'results': []}) - # results = self.backend.search(xapian.Query('index'), query_facets={'name': 'da*'}) - # self.assertEqual(results['hits'], 3) - # self.assertEqual(results['facets']['queries']['name'], ('da*', 3)) + def test_query_facets(self): + self.backend.update(self.index, self.sample_objs) + self.assertEqual(len(self.xapian_search('')), 3) + + self.assertEqual(self.backend.search(xapian.Query(), query_facets={'name': 'da*'}), {'hits': 0, 'results': []}) + results = self.backend.search(xapian.Query('indexed'), query_facets={'name': 'da*'}) + self.assertEqual(results['hits'], 3) + self.assertEqual(results['facets']['queries']['name'], ('da*', 3)) def test_narrow_queries(self): self.backend.update(self.index, self.sample_objs) self.assertEqual(len(self.xapian_search('')), 3) - self.assertEqual(self.backend.search(xapian.Query(), narrow_queries=set([xapian.Query('XNAMEdavid1')])), {'hits': 0, 'results': []}) - results = self.backend.search(xapian.Query('indexed'), narrow_queries=set([xapian.Query('XNAMEdavid1')])) + self.assertEqual(self.backend.search(xapian.Query(), narrow_queries=set(['name:david1'])), {'hits': 0, 'results': []}) + results = self.backend.search(xapian.Query('indexed'), narrow_queries=set(['name:david1'])) self.assertEqual(results['hits'], 1) def test_highlight(self): diff --git a/xapian_backend.py b/xapian_backend.py index c4477a5..8cdf77b 100755 --- a/xapian_backend.py +++ b/xapian_backend.py @@ -308,7 +308,9 @@ class SearchBackend(BaseSearchBackend): if narrow_queries is not None: query = xapian.Query( - xapian.Query.OP_AND, query, xapian.Query(xapian.Query.OP_OR, list(narrow_queries)) + xapian.Query.OP_AND, query, xapian.Query( + xapian.Query.OP_OR, [self.parse_query(narrow_query) for narrow_query in narrow_queries] + ) ) if limit_to_registered_models: @@ -696,8 +698,8 @@ class SearchBackend(BaseSearchBackend): facet_dict = {} for field, query in query_facets.iteritems(): - facet_dict[field] = (query, self.search(query)['hits']) - + facet_dict[field] = (query, self.search(self.parse_query(query))['hits']) + return facet_dict def _do_spelling_suggestion(self, database, query, spelling_query):