From b9307dd4dac8531fcaea83727d68f500cee93811 Mon Sep 17 00:00:00 2001 From: John Schember Date: Sat, 3 Aug 2013 18:16:22 -0400 Subject: [PATCH] Further work for dealing with common words and punctuation. --- src/calibre/gui2/store/search/models.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/store/search/models.py b/src/calibre/gui2/store/search/models.py index 96948c2363..bfd38d63d9 100644 --- a/src/calibre/gui2/store/search/models.py +++ b/src/calibre/gui2/store/search/models.py @@ -451,11 +451,15 @@ class SearchFilter(SearchQueryParser): vals = accessor(sr).split(',') elif locvalue in ('author2', 'title2'): m = self.IN_MATCH - vals = re.sub(r'(^|\s)(and|not|or|a|the|is|of)(\s|$)', ' ', accessor(sr)) - vals = re.sub('[.,!@#$%^&*\(\)\'"\[\]]', ' ', vals) + def field_trimmer(field): + field = re.sub(r'(^|\s)(and|not|or|a|the|is|of)(\s|$)', ' ', field) + field = re.sub('[.,!@#$%^&*\(\)\'"\[\]]', ' ', field) + return field + vals = field_trimmer(accessor(sr)) vals = vals.split(' ') vals = [x for x in vals if x] - final_query = query.lower() + final_query = field_trimmer(query.lower()) + final_query = re.sub('[ ]{2,}', ' ', final_query) else: vals = [accessor(sr)] if self._match(final_query, vals, m):