Exemple #1
0
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)
Exemple #2
0
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)