mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-08-14 00:26:21 +00:00
Fix: handle whoosh query correction errors (#10121)
This commit is contained in:
@@ -281,6 +281,7 @@ class DelayedQuery:
|
||||
self.saved_results = dict()
|
||||
self.first_score = None
|
||||
self.filter_queryset = filter_queryset
|
||||
self.suggested_correction = None
|
||||
|
||||
def __len__(self) -> int:
|
||||
page = self[0:1]
|
||||
@@ -290,7 +291,8 @@ class DelayedQuery:
|
||||
if item.start in self.saved_results:
|
||||
return self.saved_results[item.start]
|
||||
|
||||
q, mask = self._get_query()
|
||||
q, mask, suggested_correction = self._get_query()
|
||||
self.suggested_correction = suggested_correction
|
||||
sortedby, reverse = self._get_query_sortedby()
|
||||
|
||||
page: ResultsPage = self.searcher.search_page(
|
||||
@@ -361,12 +363,19 @@ class DelayedFullTextQuery(DelayedQuery):
|
||||
),
|
||||
)
|
||||
q = qp.parse(q_str)
|
||||
suggested_correction = None
|
||||
try:
|
||||
corrected = self.searcher.correct_query(q, q_str)
|
||||
if corrected.string != q_str:
|
||||
suggested_correction = corrected.string
|
||||
except Exception as e:
|
||||
logger.info(
|
||||
"Error while correcting query %s: %s",
|
||||
f"{q_str!r}",
|
||||
e,
|
||||
)
|
||||
|
||||
corrected = self.searcher.correct_query(q, q_str)
|
||||
if corrected.query != q:
|
||||
corrected.query = corrected.string
|
||||
|
||||
return q, None
|
||||
return q, None, suggested_correction
|
||||
|
||||
|
||||
class DelayedMoreLikeThisQuery(DelayedQuery):
|
||||
@@ -387,7 +396,7 @@ class DelayedMoreLikeThisQuery(DelayedQuery):
|
||||
)
|
||||
mask: set = {docnum}
|
||||
|
||||
return q, mask
|
||||
return q, mask, None
|
||||
|
||||
|
||||
def autocomplete(
|
||||
|
Reference in New Issue
Block a user