예제 #1
0
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)
예제 #2
0
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
예제 #3
0
                      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'))
예제 #4
0
        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()