Fix: handle whoosh query correction errors (#10121)

This commit is contained in:
shamoon
2025-06-05 08:57:25 -07:00
committed by GitHub
parent 422bffe1a6
commit 51e6eed72a
3 changed files with 52 additions and 13 deletions

View File

@@ -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(