def records_by_author (context, author): cursor = context.get_cursor() queued_records = [] source_catalog = context.get_source_catalog() complete_mapping = source_catalog.get_complete_mapping() term_list = complete_mapping['author'] term_clause = ' OR '.join(['queued_record_metadata.term_id=%s' % term.uid for term in term_list]) try: select_clause = """ SELECT queued_records.uid FROM queued_records, queued_record_metadata, studies WHERE queued_records.uid = queued_record_metadata.queued_record_id AND queued_records.uid = studies.record_id AND queued_records.status = 2 AND studies.article_type >= 2 AND studies.article_type < 8 AND (%s) """ % term_clause cursor.execute(select_clause + """ AND value LIKE %s """, str(author) + '%' ) rows = cursor.fetchall() for row in rows: queued_record = QueuedRecord(context, row[0]) queued_records.append(queued_record) except Exception, e: context.logger.error('Records by author: %s', e)
def records_by_author_index (context): cursor = context.get_cursor() results = [] source_catalog = context.get_source_catalog() complete_mapping = source_catalog.get_complete_mapping() term_list = complete_mapping['author'] term_clause = ' OR '.join(['term_id=%s' % term.uid for term in term_list]) select_clause = """ SELECT COUNT(*) AS the_count, value FROM queued_record_metadata, queued_records, studies WHERE queued_record_metadata.queued_record_id = queued_records.uid AND queued_records.uid = studies.record_id AND queued_records.status = 2 AND studies.article_type >= 2 AND studies.article_type < 8 AND (%s) GROUP BY value ORDER BY value """ % term_clause cursor.execute(select_clause) rows = cursor.fetchall() results.extend([(r[0], r[1]) for r in rows]) return results
dest='field', default='all', help='field to search') parser.add_option('-l', '--locations', dest='locations', action='store_true', default=False, help='report location data only?') (options, args) = parser.parse_args() config = canary.context.CanaryConfig() config.read_file(options.config) context = canary.context.Context(config) source_catalog = context.get_source_catalog() ctm = source_catalog.get_complete_mapping() if not args: print usage sys.exit(0) query_str = options.boolean.join( [' "%s" [%s] ' % (term, options.field) for term in args]) #print query_str.strip() search_index = SearchIndex(context) hit_list = [] hits, searcher = search_index.search(query_str) for i, doc in hits: hit_list.append(doc.get('uid'))
dest='canary_id', default=0, help='specific canary id to fetch') parser.add_option('-c', '--config', dest='config', default='conf/canary_config.py', help='path to configuration file') parser.add_option('-u', '--update', action='store_true', dest='update', default=False, help='save updated data to the database') (options, args) = parser.parse_args() context = canary.context.Context() cursor = context.get_cursor() # get a complete mapping source_catalog = context.get_source_catalog() complete_mapping = source_catalog.get_complete_mapping() # pubmed-medline is source 13 pubmed_source = source_catalog.get_source(13) pubmed_search = PubmedSearch() if options.canary_id: rows = [[options.canary_id,],] else: # get all active queuedrecord ids cursor.execute(""" SELECT uid FROM queued_records """) rows = cursor.fetchall()