diff options
Diffstat (limited to 'service/pixelated')
-rw-r--r-- | service/pixelated/adapter/search.py | 9 | ||||
-rw-r--r-- | service/pixelated/controllers/mails_controller.py | 2 |
2 files changed, 6 insertions, 5 deletions
diff --git a/service/pixelated/adapter/search.py b/service/pixelated/adapter/search.py index 72e714e9..6b579d87 100644 --- a/service/pixelated/adapter/search.py +++ b/service/pixelated/adapter/search.py @@ -116,16 +116,17 @@ class SearchEngine(object): results = searcher.search(query, **options) return results - def search(self, query): - options = {'limit': 100} + def search(self, query, window, page): + page = int(page) if (page is not None and int(page) > 0) else 1 + window = int(window) or 25 query = query.replace('\"', '') query = query.replace('-in:', 'AND NOT tag:') query = query.replace('in:all', '*') with self._index.searcher() as searcher: - query = QueryParser('body', self._index.schema).parse(query) - results = searcher.search(query, **options) + query = QueryParser('raw', self._index.schema).parse(query) + results = searcher.search_page(query, page, pagelen=window) return [mail['ident'] for mail in results] def remove_from_index(self, mail_id): diff --git a/service/pixelated/controllers/mails_controller.py b/service/pixelated/controllers/mails_controller.py index 6765fc78..6bd2fe99 100644 --- a/service/pixelated/controllers/mails_controller.py +++ b/service/pixelated/controllers/mails_controller.py @@ -29,7 +29,7 @@ class MailsController: self._search_engine = search_engine def mails(self, _request=request): - mail_ids = self._search_engine.search(_request.args.get('q')) + mail_ids = self._search_engine.search(_request.args.get('q'), _request.args.get('w'), _request.args.get('p')) mails = self._mail_service.mails(mail_ids) mails = sorted(mails, key=lambda mail: dateparser.parse(mail.date), reverse=True) |