From 433ad25335b94876710ea27fc0d0173f951a8440 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Sat, 12 Jan 2019 00:16:29 +0100 Subject: sql name search many terms --- megapixels/app/server/api.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'megapixels/app/server/api.py') 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, -- cgit v1.2.3-70-g09d2