mirror of
https://github.com/Hopiu/xapian-haystack.git
synced 2026-05-01 12:04:49 +00:00
Order by is working
This commit is contained in:
parent
ae58bf85d2
commit
617f623b6b
2 changed files with 59 additions and 53 deletions
|
|
@ -228,18 +228,18 @@ class XapianSearchBackendTestCase(TestCase):
|
|||
# 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(self.sb.search(xapian.Query(), query_facets={'name': 'da*', {'hits': 0, 'results': []})
|
||||
# results = self.sb.search(xapian.Query('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)
|
||||
# self.assertEqual(len(self.xapian_search('')), 3)
|
||||
#
|
||||
# self.assertEqual(self.sb.search('', narrow_queries=set(['name:david1'])), {'hits': 0, 'results': []})
|
||||
# results = self.sb.search('index', narrow_queries=set(['name:david1']))
|
||||
# self.assertEqual(results['hits'], 1)
|
||||
def test_narrow_queries(self):
|
||||
self.sb.update(self.msi, self.sample_objs)
|
||||
self.assertEqual(len(self.xapian_search('')), 3)
|
||||
|
||||
self.assertEqual(self.sb.search(xapian.Query(), narrow_queries=set([xapian.Query('XNAMEdavid1')])), {'hits': 0, 'results': []})
|
||||
results = self.sb.search(xapian.Query('indexed'), narrow_queries=set([xapian.Query('XNAMEdavid1')]))
|
||||
self.assertEqual(results['hits'], 1)
|
||||
|
||||
def test_highlight(self):
|
||||
self.sb.update(self.msi, self.sample_objs)
|
||||
|
|
@ -281,38 +281,38 @@ class XapianSearchBackendTestCase(TestCase):
|
|||
self.assertEqual(results['hits'], 2)
|
||||
self.assertEqual([result.pk for result in results['results']], [3, 2])
|
||||
|
||||
# def test_order_by(self):
|
||||
# self.sb.update(self.msi, self.sample_objs)
|
||||
#
|
||||
# results = self.sb.search('*', sort_by=['pub_date'])
|
||||
# self.assertEqual([result.pk for result in results['results']], [3, 2, 1])
|
||||
#
|
||||
# results = self.sb.search('*', sort_by=['-pub_date'])
|
||||
# self.assertEqual([result.pk for result in results['results']], [1, 2, 3])
|
||||
#
|
||||
# results = self.sb.search('*', sort_by=['id'])
|
||||
# self.assertEqual([result.pk for result in results['results']], [1, 2, 3])
|
||||
#
|
||||
# results = self.sb.search('*', sort_by=['-id'])
|
||||
# self.assertEqual([result.pk for result in results['results']], [3, 2, 1])
|
||||
#
|
||||
# results = self.sb.search('*', sort_by=['value'])
|
||||
# self.assertEqual([result.pk for result in results['results']], [1, 2, 3])
|
||||
#
|
||||
# results = self.sb.search('*', sort_by=['-value'])
|
||||
# self.assertEqual([result.pk for result in results['results']], [3, 2, 1])
|
||||
#
|
||||
# results = self.sb.search('*', sort_by=['popularity'])
|
||||
# self.assertEqual([result.pk for result in results['results']], [2, 1, 3])
|
||||
#
|
||||
# results = self.sb.search('*', sort_by=['-popularity'])
|
||||
# self.assertEqual([result.pk for result in results['results']], [3, 1, 2])
|
||||
#
|
||||
# results = self.sb.search('*', sort_by=['flag', 'id'])
|
||||
# self.assertEqual([result.pk for result in results['results']], [2, 1, 3])
|
||||
#
|
||||
# results = self.sb.search('*', sort_by=['flag', '-id'])
|
||||
# self.assertEqual([result.pk for result in results['results']], [2, 3, 1])
|
||||
def test_order_by(self):
|
||||
self.sb.update(self.msi, self.sample_objs)
|
||||
|
||||
results = self.sb.search(xapian.Query(''), sort_by=['pub_date'])
|
||||
self.assertEqual([result.pk for result in results['results']], [3, 2, 1])
|
||||
|
||||
results = self.sb.search(xapian.Query(''), sort_by=['-pub_date'])
|
||||
self.assertEqual([result.pk for result in results['results']], [1, 2, 3])
|
||||
|
||||
results = self.sb.search(xapian.Query(''), sort_by=['id'])
|
||||
self.assertEqual([result.pk for result in results['results']], [1, 2, 3])
|
||||
|
||||
results = self.sb.search(xapian.Query(''), sort_by=['-id'])
|
||||
self.assertEqual([result.pk for result in results['results']], [3, 2, 1])
|
||||
|
||||
results = self.sb.search(xapian.Query(''), sort_by=['value'])
|
||||
self.assertEqual([result.pk for result in results['results']], [1, 2, 3])
|
||||
|
||||
results = self.sb.search(xapian.Query(''), sort_by=['-value'])
|
||||
self.assertEqual([result.pk for result in results['results']], [3, 2, 1])
|
||||
|
||||
results = self.sb.search(xapian.Query(''), sort_by=['popularity'])
|
||||
self.assertEqual([result.pk for result in results['results']], [2, 1, 3])
|
||||
|
||||
results = self.sb.search(xapian.Query(''), sort_by=['-popularity'])
|
||||
self.assertEqual([result.pk for result in results['results']], [3, 1, 2])
|
||||
|
||||
results = self.sb.search(xapian.Query(''), sort_by=['flag', 'id'])
|
||||
self.assertEqual([result.pk for result in results['results']], [2, 1, 3])
|
||||
|
||||
results = self.sb.search(xapian.Query(''), sort_by=['flag', '-id'])
|
||||
self.assertEqual([result.pk for result in results['results']], [2, 3, 1])
|
||||
|
||||
# def test_boost(self):
|
||||
# self.sb.update(self.msi, self.sample_objs)
|
||||
|
|
|
|||
|
|
@ -253,17 +253,6 @@ class SearchBackend(BaseSearchBackend):
|
|||
'hits': 0,
|
||||
}
|
||||
|
||||
# if limit_to_registered_models:
|
||||
# if narrow_queries is None:
|
||||
# narrow_queries = set()
|
||||
#
|
||||
# registered_models = self.build_registered_models_list()
|
||||
#
|
||||
# if len(registered_models) > 0:
|
||||
# narrow_queries.add(
|
||||
# ' '.join(['django_ct:%s' % model for model in registered_models])
|
||||
# )
|
||||
|
||||
database = self._database()
|
||||
|
||||
if getattr(settings, 'HAYSTACK_INCLUDE_SPELLING', False) is True:
|
||||
|
|
@ -271,6 +260,24 @@ class SearchBackend(BaseSearchBackend):
|
|||
else:
|
||||
spelling_suggestion = ''
|
||||
|
||||
if narrow_queries is not None:
|
||||
query = xapian.Query(
|
||||
xapian.Query.OP_AND, query, xapian.Query(xapian.Query.OP_OR, list(narrow_queries))
|
||||
)
|
||||
|
||||
if limit_to_registered_models:
|
||||
registered_models = self.build_registered_models_list()
|
||||
|
||||
if len(registered_models) > 0:
|
||||
query = xapian.Query(
|
||||
xapian.Query.OP_AND, query,
|
||||
xapian.Query(
|
||||
xapian.Query.OP_OR, [
|
||||
xapian.Query('%s%s' % (DOCUMENT_CT_TERM_PREFIX, model)) for model in registered_models
|
||||
]
|
||||
)
|
||||
)
|
||||
|
||||
enquire = xapian.Enquire(database)
|
||||
enquire.set_query(query)
|
||||
|
||||
|
|
@ -378,7 +385,6 @@ class SearchBackend(BaseSearchBackend):
|
|||
query = xapian.Query(
|
||||
xapian.Query.OP_AND_NOT, [query, DOCUMENT_ID_TERM_PREFIX + get_identifier(model_instance)]
|
||||
)
|
||||
narrow_queries = []
|
||||
if limit_to_registered_models:
|
||||
registered_models = self.build_registered_models_list()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue