# HG changeset patch # User ymh # Date 1391603561 -3600 # Node ID 9b7682bc6f0c96105fba150a3b5df7dd2f1b60e0 # Parent a7f6df0f8559162a12b61556434c60c98d1e49a6 correct field selection on autocomplete diff -r a7f6df0f8559 -r 9b7682bc6f0c src/jocondelab/views/ajax.py --- a/src/jocondelab/views/ajax.py Wed Feb 05 04:37:37 2014 +0100 +++ b/src/jocondelab/views/ajax.py Wed Feb 05 13:32:41 2014 +0100 @@ -72,10 +72,10 @@ if not res_list: if lang in [ "fr", "en", "de", "it", "es", "pt", "ca", "br", "eu", "oc" ]: - fields_index_qs = SearchQuerySet().models(DbpediaFields).filter(language_code__exact=lang).autocomplete(label_ngram=q) + fields_index_qs = SearchQuerySet().models(DbpediaFields).filter(language_code__exact=lang).autocomplete(label_edge=q) else: - fields_index_qs = SearchQuerySet().models(DbpediaFields).filter(language_code__exact=lang).autocomplete(label_edge=q) - + fields_index_qs = SearchQuerySet().models(DbpediaFields).filter(language_code__exact=lang).autocomplete(label_ngram=q) + res_dict = {} for r in fields_index_qs[:count*5]: dbpedia_uri = r.get_stored_fields()['dbpedia_uri'] @@ -85,7 +85,7 @@ res_entry = res_dict.setdefault(dbpedia_uri, {'label': None, 'score':0, 'uri':dbpedia_uri}) res_entry['label'] = label if label and not res_entry.get('label', None) else res_entry['label'] res_entry['score'] += r.score - + res_list = sorted([ res_entry for res_entry in res_dict.values()],key=lambda r: r.get('score',0), reverse=True) cache.set(cachekey, res_list) return HttpResponse(content=json.dumps([{"dbpedia_uri":r.get('uri'), "label": r.get('label','')} for r in res_list]), mimetype='application/json')