summaryrefslogtreecommitdiff
path: root/megapixels/app/server/api.py
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2019-01-12 00:16:29 +0100
committerJules Laplace <julescarbon@gmail.com>2019-01-12 00:16:29 +0100
commit433ad25335b94876710ea27fc0d0173f951a8440 (patch)
treef1b20dfa4e6e39cc8ddc201ef91297b473db116a /megapixels/app/server/api.py
parent334ea5a2a91da853dc6faf7f48aaa12599201218 (diff)
sql name search many terms
Diffstat (limited to 'megapixels/app/server/api.py')
-rw-r--r--megapixels/app/server/api.py23
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,