diff --git a/src/calibre/gui2/store/search.py b/src/calibre/gui2/store/search.py index 4514f6441a..ce8296ba7e 100644 --- a/src/calibre/gui2/store/search.py +++ b/src/calibre/gui2/store/search.py @@ -314,11 +314,14 @@ class SearchThread(Thread): def _clean_query(self, query): query = query.lower() + # Remove the prefix. for loc in ( 'all', 'author', 'authors', 'title'): query = re.sub(r'%s:"?(?P[^\s"]+)"?' % loc, '\g', query) + # Remove the prefix and search text. for loc in ('cover', 'drm', 'format', 'formats', 'price', 'store'): query = re.sub(r'%s:"[^"]"' % loc, '', query) query = re.sub(r'%s:[^\s]*' % loc, '', query) + # Remove control modifiers. query = re.sub(r'(^|\s)(and|not|or)(\s|$)', ' ', query) query = query.replace('\\', '') query = query.replace('!', '') @@ -326,6 +329,7 @@ class SearchThread(Thread): query = query.replace('~', '') query = query.replace('>', '') query = query.replace('<', '') + # Remove excess whitespace. query = re.sub(r'\s{2,}', ' ', query) return query