def similar(id): enable_cache() entity = get_index_entity(id, request.authz.READ) result = SimilarEntitiesQuery.handle(request, entity=entity, schema=CombinedSchema) return jsonify(result)
def similar(id): enable_cache() entity, _ = get_entity(id, request.authz.READ) result = SimilarEntitiesQuery.handle_request(request, entity=entity, schema=EntitySchema) return jsonify(result)
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) }