diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2019-01-12 00:16:29 +0100 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2019-01-12 00:16:29 +0100 |
| commit | 433ad25335b94876710ea27fc0d0173f951a8440 (patch) | |
| tree | f1b20dfa4e6e39cc8ddc201ef91297b473db116a /megapixels/app/server/api.py | |
| parent | 334ea5a2a91da853dc6faf7f48aaa12599201218 (diff) | |
sql name search many terms
Diffstat (limited to 'megapixels/app/server/api.py')
| -rw-r--r-- | megapixels/app/server/api.py | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/megapixels/app/server/api.py b/megapixels/app/server/api.py index 3683d5fd..cc791bb2 100644 --- a/megapixels/app/server/api.py +++ b/megapixels/app/server/api.py @@ -3,6 +3,7 @@ import re import time import dlib import numpy as np +import operator from flask import Blueprint, request, jsonify from PIL import Image # todo: try to remove PIL dependency @@ -139,14 +140,32 @@ def name_lookup(dataset_name): dataset = get_dataset(dataset_name) q = request.args.get('q') + q = re.sub('[^a-zA-Z ]+', '*', q) + terms = q.split(' ') # print(q) query = { 'q': q, 'timing': time.time() - start, } - results = dataset.search_name(q + '%') if q else None - + if len(terms) == 1: + names = dataset.search_name('%' + term + '%') if term else [] + results = dataset.get_uuids_for_identities(names) + else: + lookup = {} + results_lookup = {} + for i, term in enumerate(terms): + search_term = '%' + term + '%' + names = dataset.search_name() if term else [] + for name in names: + if name.id in lookup: + lookup[name.id] += 1 + else: + lookup[name.id] = 1 + results_lookup[name.id] = name + top_names = [results_lookup[item[0]] for item in sorted(lookup.items(), key=operator.itemgetter(1))][0:30] + results = dataset.get_uuids_for_identities(top_names) + # print(results) return jsonify({ 'query': query, |
