Query facets working again and reworked narrow to take a query_string instead of xapian.Query. This should be easier to use.

This commit is contained in:
David Sauve 2009-12-05 10:43:52 -05:00
parent 3752844e4a
commit 72134e096b
2 changed files with 15 additions and 13 deletions

View File

@ -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):

View File

@ -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):