Ejemplo n.º 1
0
    def set_knowledge_inv_index(self):
        qfactor_keys = self.get_all_question_factor_keys()
        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 = self.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'
                self.redis_db.hset(self.KNOWLEDGE_INV_INDEX, field, value)
                modified_fields.add(field)

        self.flush_inv_index(self.KNOWLEDGE_INV_INDEX, modified_fields)
Ejemplo n.º 2
0
    def set_knowledge_inv_index(self):
        qfactor_keys = self.get_all_question_factor_keys()
        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 = self.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'
                self.redis_db.hset(self.KNOWLEDGE_INV_INDEX, field, value)
                modified_fields.add(field)

        self.flush_inv_index(self.KNOWLEDGE_INV_INDEX, modified_fields)
Ejemplo n.º 3
0
 def _extractor(x):
     mat = load_matrix(x)
     res = [":".join([str(tag), diff]) for tag in mat.keys()]
     return "|".join(res)