Implemented query facets
This commit is contained in:
parent
fdef0c5ed1
commit
1a8e6d24b6
|
@ -206,11 +206,14 @@ class XapianSearchBackendTestCase(TestCase):
|
|||
('2009-02-01T00:00:00', 0)
|
||||
])
|
||||
|
||||
# def test_query_facets(self):
|
||||
# self.assertEqual(self.sb.search('', query_facets={'name': '[* TO e]'}), {'hits': 0, 'results': []})
|
||||
# results = self.sb.search('index', query_facets={'name': '[* TO e]'})
|
||||
# self.assertEqual(results['hits'], 3)
|
||||
# self.assertEqual(results['facets'], {})
|
||||
def test_query_facets(self):
|
||||
self.sb.update(self.msi, self.sample_objs)
|
||||
self.assertEqual(len(self.xapian_search('')), 3)
|
||||
|
||||
self.assertEqual(self.sb.search('', query_facets={'name': 'da*'}), {'hits': 0, 'results': []})
|
||||
results = self.sb.search('index', query_facets={'name': 'da*'})
|
||||
self.assertEqual(results['hits'], 3)
|
||||
self.assertEqual(results['facets']['queries']['name'], ('da*', 3))
|
||||
|
||||
def test_narrow_queries(self):
|
||||
self.sb.update(self.msi, self.sample_objs)
|
||||
|
|
|
@ -340,6 +340,8 @@ class SearchBackend(BaseSearchBackend):
|
|||
|
||||
if date_facets:
|
||||
facets_dict['dates'] = self._do_date_facets(results, date_facets)
|
||||
if query_facets:
|
||||
facets_dict['queries'] = self._do_query_facets(results, query_facets)
|
||||
|
||||
return {
|
||||
'results': results,
|
||||
|
@ -548,6 +550,14 @@ class SearchBackend(BaseSearchBackend):
|
|||
|
||||
return facet_dict
|
||||
|
||||
def _do_query_facets(self, results, query_facets):
|
||||
facet_dict = {}
|
||||
|
||||
for field, query in query_facets.iteritems():
|
||||
facet_dict[field] = (query, self.search(query)['hits'])
|
||||
|
||||
return facet_dict
|
||||
|
||||
def _marshal_value(self, value):
|
||||
"""
|
||||
Private method that converts Python values to a string for Xapian values.
|
||||
|
|
Loading…
Reference in New Issue