mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-03 03:16:10 -06: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,8 +191,7 @@ 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,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user