summaryrefslogtreecommitdiff
path: root/service/pixelated
diff options
context:
space:
mode:
Diffstat (limited to 'service/pixelated')
-rw-r--r--service/pixelated/adapter/search.py9
-rw-r--r--service/pixelated/controllers/mails_controller.py2
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)