From ba3fe6aca3588262e76d467ae004d0818c987358 Mon Sep 17 00:00:00 2001 From: Bruno Wagner Date: Wed, 18 Nov 2015 19:01:52 -0200 Subject: Issue #526 - Fixed contacts query input and results to only return matched terms --- service/pixelated/adapter/search/contacts.py | 16 ++++++++++------ service/pixelated/resources/contacts_resource.py | 2 +- 2 files changed, 11 insertions(+), 7 deletions(-) (limited to 'service') diff --git a/service/pixelated/adapter/search/contacts.py b/service/pixelated/adapter/search/contacts.py index 0729e146..d981e0bb 100644 --- a/service/pixelated/adapter/search/contacts.py +++ b/service/pixelated/adapter/search/contacts.py @@ -44,9 +44,13 @@ def search_addresses(searcher, query): results = [] for field in ['to', 'cc', 'bcc', 'sender']: query_parser = QueryParser(field, searcher.schema) - results.append(searcher.search(query_parser.parse("*%s*" % query), - limit=None, - mask=restrict_q, - groupedby=sorting.FieldFacet(field, - allow_overlap=True)).groups()) - return flatten(results) + results.append( + searcher.search( + query_parser.parse("*%s*" % query), + limit=None, + mask=restrict_q, + groupedby=sorting.FieldFacet( + field, + allow_overlap=True), + terms=True).matched_terms()) + return [address[1] for address in flatten(results)] diff --git a/service/pixelated/resources/contacts_resource.py b/service/pixelated/resources/contacts_resource.py index c9b81f54..43155774 100644 --- a/service/pixelated/resources/contacts_resource.py +++ b/service/pixelated/resources/contacts_resource.py @@ -29,7 +29,7 @@ class ContactsResource(Resource): self._search_engine = search_engine def render_GET(self, request): - query = request.args.get('q', ['']) + query = request.args.get('q', [''])[-1] d = deferToThread(lambda: self._search_engine.contacts(query)) d.addCallback(lambda tags: respond_json_deferred(tags, request)) -- cgit v1.2.3