def encode_filters()

in aiops/RCRank/model/modules/QueryFormer/utils.py [0:0]


    def encode_filters(self, filters=[], alias=None): 
        if len(filters) == 0:
            return {'colId':[self.col2idx['NA']],
                   'opId': [self.op2idx['NA']]}
            
        res = {'colId':[],'opId': []}
        for filt in filters:
            filt = ''.join(c for c in filt if c not in '()')
            fs = re.split(' AND | OR ', filt)
            for f in fs:
                    op = None
                    for k, v in self.idx2op.items():
                        if v in f:
                            op = v
                    if op is None:
                        op = 'NA'
                    col = f.split(' ')[0]
                    if alias is None:
                        column = col
                    else:
                        column = alias + '.' + col
                    if column not in self.col2idx:
                        self.col2idx[column] = len(self.col2idx)
                        self.idx2col[self.col2idx[column]] = column
                    
                    res['colId'].append(self.col2idx[column])
                    res['opId'].append(self.op2idx[op])
        return res