Пример #1
0
def set_math_knowledge_inv_index(redis_db):
    qfactor_keys = get_all_question_factor_keys(redis_db)
    keys = reduce(list.__add__, qfactor_keys.values())

    k_idx = {}
    for key in keys:
        qtype, qid = key.split('/')[-2:]
        k_str, m_str, k_m_str, diff = redis_db.lrange(key, 0, -1)
        k_mat = load_matrix(k_str)
        for ktag in k_mat.keys():
            k_idx.setdefault(ktag, {})
            value = ":".join([qid, diff])
            k_idx[ktag].setdefault(qtype, []).append(value)

    modified_fields = set()
    for ktag, item in k_idx.iteritems():
        for qtype, qids in item.iteritems():
            field = '%s:%s' % (ktag, qtype)
            value = "|".join(qids)  # qids 中每项是 'qid:k_mat_value'
            redis_db.hset(MATH_KNOWLEDGE_INV_INDEX, field, value)
            modified_fields.add(field)

    flush_inv_index(redis_db, MATH_KNOWLEDGE_INV_INDEX, modified_fields)
Пример #2
0
 def _extractor(x):
     mat = load_matrix(x)
     res = [":".join([str(tag), diff]) for tag in mat.keys()]
     return "|".join(res)
Пример #3
0
def load_card_factor(redis_db, key):
    try:
        k_str = redis_db.get(key)
    except ValueError:
        k_str = '{}'
    return load_matrix(k_str)
Пример #4
0
 def _extractor(x):
     mat = load_matrix(x)
     res = [":".join([str(tag), diff]) for tag in mat.keys()]
     return "|".join(res)