Skip to content

Commit eb978f2

Browse files
committed
Prevent Whoosh from erroring if the end_offset is less than or equal to 0. Thanks to zifot for the report!
1 parent e0dc369 commit eb978f2

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

haystack/backends/whoosh_backend.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,11 @@ def search(self, query_string, sort_by=None, start_offset=0, end_offset=None,
333333
'hits': 0,
334334
}
335335

336+
# Prevent against Whoosh throwing an error. Requires an end_offset
337+
# greater than 0.
338+
if not end_offset is None and end_offset <= 0:
339+
end_offset = 1
340+
336341
raw_results = searcher.search(parsed_query, limit=end_offset, sortedby=sort_by, reverse=reverse)
337342

338343
# Handle the case where the results have been narrowed.

tests/whoosh_tests/tests/whoosh_backend.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,10 @@ def test_slicing(self):
313313
self.assertEqual([result.pk for result in page_1['results']], [u'%s' % i for i in xrange(1, 21)])
314314
self.assertEqual(len(page_2['results']), 3)
315315
self.assertEqual([result.pk for result in page_2['results']], [u'21', u'22', u'23'])
316+
317+
# This used to throw an error.
318+
page_0 = self.sb.search(u'*', start_offset=0, end_offset=0)
319+
self.assertEqual(len(page_0['results']), 1)
316320

317321
def test_scoring(self):
318322
self.sb.update(self.smmi, self.sample_objs)

0 commit comments

Comments
 (0)