def autocomplete(): ''' Devuelve la lista para el autocompletado de la búsqueda ''' query = request.args["term"] ct = request.args.get("t",None) if ct: ct = ct.lower() tc = TamingClient(current_app.config["SERVICE_TAMING_SERVERS"], current_app.config["SERVICE_TAMING_TIMEOUT"]) tamingWeight = {"c":1, "lang":200} if ct: for cti in current_app.config["CONTENTS_CATEGORY"][ct]: tamingWeight[current_app.config["TAMING_TYPES"][cti]] = 200 options = tc.tameText(query, tamingWeight, 5, 3, 0.2) if options is None: results = [] else: results = [result[2] for result in options] return json.dumps(results)
def taming_search(config, query, ct, contextg): ''' Obtiene los resultados que se muestran en el taming ''' def generate_tags(res): ''' Genera los tags ''' tag = res[2][querylen+1:] return (tag[querylen+1:] if tag.startswith(query+" ") else tag, 100*max(min(1.25, res[0]/mean), 0.75)) profiler.checkpoint(opening=["taming_tags"], contextg=contextg) tamingWeight = {"c":1, "lang":200} if ct in config["CONTENTS_CATEGORY"]: for cti in config["CONTENTS_CATEGORY"][ct]: tamingWeight[config["TAMING_TYPES"][cti]] = 200 tc = TamingClient(config["SERVICE_TAMING_SERVERS"], config["SERVICE_TAMING_TIMEOUT"]) if not tc.open_connection(): return #tags relacionados querylen = len(query) try: tags = tc.tameText(query+" ", tamingWeight, 20, 4, 0.7, 0) if tags: mean = (tags[0][0] + tags[-1][0])/2 tags = map(generate_tags, tags) tags.sort() else: tags = () except Exception as e: logging.exception("Error getting search related tags.") tags = () yield tags profiler.checkpoint(opening=["taming_dym"], closing=["taming_tags"], contextg=contextg) #quiso decir try: suggest = tc.tameText(query, tamingWeight, 1, 3, 0.8, 1, 0) didyoumean = None if suggest and suggest[0][2]!=query: didyoumean = suggest[0][2] except Exception as e: logging.exception("Error getting did you mean suggestion.") try: tc.close_connection() except: pass yield didyoumean profiler.checkpoint(closing=["taming_dym"], contextg=contextg)