mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	fixed an issue with the searcher.
This commit is contained in:
		| @@ -1,4 +1,5 @@ | |||||||
| import logging | import logging | ||||||
|  | from contextlib import contextmanager | ||||||
|  |  | ||||||
| from django.db import models | from django.db import models | ||||||
| from django.dispatch import receiver | from django.dispatch import receiver | ||||||
| @@ -99,15 +100,19 @@ def remove_document_from_index(document): | |||||||
|         remove_document(writer, document) |         remove_document(writer, document) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @contextmanager | ||||||
| def query_page(ix, query, page): | def query_page(ix, query, page): | ||||||
|     with ix.searcher() as searcher: |     searcher = ix.searcher() | ||||||
|  |     try: | ||||||
|         query_parser = MultifieldParser(["content", "title", "correspondent"], |         query_parser = MultifieldParser(["content", "title", "correspondent"], | ||||||
|                                         ix.schema).parse(query) |                                         ix.schema).parse(query) | ||||||
|         result_page = searcher.search_page(query_parser, page) |         result_page = searcher.search_page(query_parser, page) | ||||||
|         result_page.results.fragmenter = highlight.ContextFragmenter( |         result_page.results.fragmenter = highlight.ContextFragmenter( | ||||||
|             surround=50) |             surround=50) | ||||||
|         result_page.results.formatter = JsonFormatter() |         result_page.results.formatter = JsonFormatter() | ||||||
|         return result_page |         yield result_page | ||||||
|  |     finally: | ||||||
|  |         searcher.close() | ||||||
|  |  | ||||||
|  |  | ||||||
| def autocomplete(ix, term, limit=10): | def autocomplete(ix, term, limit=10): | ||||||
|   | |||||||
| @@ -191,13 +191,12 @@ class SearchView(APIView): | |||||||
|             except (ValueError, TypeError): |             except (ValueError, TypeError): | ||||||
|                 page = 1 |                 page = 1 | ||||||
|  |  | ||||||
|             result_page = index.query_page(self.ix, query, page) |             with index.query_page(self.ix, query, page) as result_page: | ||||||
|  |                 return Response( | ||||||
|             return Response( |                     {'count': len(result_page), | ||||||
|                 {'count': len(result_page), |                      'page': result_page.pagenum, | ||||||
|                  'page': result_page.pagenum, |                      'page_count': result_page.pagecount, | ||||||
|                  'page_count': result_page.pagecount, |                      'results': list(map(self.add_infos_to_hit, result_page))}) | ||||||
|                  'results': list(map(self.add_infos_to_hit, result_page))}) |  | ||||||
|  |  | ||||||
|         else: |         else: | ||||||
|             return Response({ |             return Response({ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jonas Winkler
					Jonas Winkler