Exemplo n.º 1
0
def similar(id):
    enable_cache()
    entity = get_index_entity(id, request.authz.READ)
    result = SimilarEntitiesQuery.handle(request,
                                         entity=entity,
                                         schema=CombinedSchema)
    return jsonify(result)
Exemplo n.º 2
0
def similar(id):
    enable_cache()
    entity, _ = get_entity(id, request.authz.READ)
    result = SimilarEntitiesQuery.handle_request(request,
                                                 entity=entity,
                                                 schema=EntitySchema)
    return jsonify(result)
Exemplo n.º 3
0
def reconcile_op(query):
    """Reconcile operation for a single query."""
    parser = SearchQueryParser({
        'limit': query.get('limit', '5'),
        'strict': 'false'
    }, request.authz)

    name = query.get('query', '')
    schema = query.get('type') or 'Thing'
    entity = {
        'id': 'fake',
        'names': [name],
        'fingerprints': [fingerprints.generate(name)],
        'schemata': ensure_list(schema),
        'schema': schema
    }

    for p in query.get('properties', []):
        entity[p.get('pid')] = ensure_list(p.get('v'))

    query = SimilarEntitiesQuery(parser, entity=entity)
    matches = []
    for doc in query.search().get('hits').get('hits'):
        source = doc.get('_source')
        match = {
            'id': doc.get('_id'),
            'name': source.get('name'),
            'score': min(100, doc.get('_score') * 10),
            'uri': entity_url(doc.get('_id')),
            'match': source.get('name') == name
        }
        for type_ in get_freebase_types():
            if source['schema'] == type_['id']:
                match['type'] = [type_]
        matches.append(match)

    log.info("Reconciled: %r -> %d matches", name, len(matches))
    return {
        'result': matches,
        'num': len(matches)
    }