diff --git a/haystack/backends/whoosh_backend.py b/haystack/backends/whoosh_backend.py index 2dda457a3..78e22df9f 100644 --- a/haystack/backends/whoosh_backend.py +++ b/haystack/backends/whoosh_backend.py @@ -305,6 +305,8 @@ def search(self, query_string, sort_by=None, start_offset=0, end_offset=None, if len(registered_models) > 0: narrow_queries.add('%s:(%s)' % (DJANGO_CT, ' OR '.join(registered_models))) + narrow_searcher = None + if narrow_queries is not None: # Potentially expensive? I don't see another way to do it in Whoosh... narrow_searcher = self.index.searcher() @@ -367,7 +369,13 @@ def search(self, query_string, sort_by=None, start_offset=0, end_offset=None, 'spelling_suggestion': None, } - return self._process_results(raw_page, highlight=highlight, query_string=query_string, spelling_query=spelling_query) + results = self._process_results(raw_page, highlight=highlight, query_string=query_string, spelling_query=spelling_query) + searcher.close() + + if hasattr(narrow_searcher, 'close'): + narrow_searcher.close() + + return results else: if getattr(settings, 'HAYSTACK_INCLUDE_SPELLING', False): if spelling_query: diff --git a/tests/run_all_tests.sh b/tests/run_all_tests.sh index f295afc21..265035c4d 100755 --- a/tests/run_all_tests.sh +++ b/tests/run_all_tests.sh @@ -12,8 +12,6 @@ django-admin.py test solr_tests --settings=solr_settings echo "" echo "** WHOOSH **" -# For Mac OS X and because Whoosh creates a large number of files... -ulimit -n 2000 django-admin.py test whoosh_tests --settings=whoosh_settings echo ""