def sum_list(list): import random key = str(int(random.random()*100000)) for l in list: cache.zincrby(name=key, value=l, amount=1) results = cache.zrevrangebyscore(name=key, min='-inf', max='+inf', withscores=True) cache.delete(key) return results
def search(self, words): keys = self.parse(words) try: cache_words = slugify(unidecode(words)) cache.zinterstore(dest=self.cache_key_prefix + cache_words, keys=keys) except Exception as err: logger.error("Err is %s" %err) return None cache_keys = cache.zrevrangebyscore(self.cache_key_prefix + cache_words, "+inf", "-inf") tags = [] for cache_key in cache_keys: tags.append(cache.hgetall(cache_key)) tags = filter(None, tags) return { words: tags }
def parse(cls, words): import random if isinstance(words, list): return [] tmp_key = 'TMP:KEY:%s' %str(int(float(random.random()*100000))) results = [] words = to_str(words) for text in seg_txt(words): if cls.is_keyword(text): results.append(text) for r in results: cache.zincrby(name=tmp_key, value=r, amount=1) keywords = cache.zrevrangebyscore(name=tmp_key, min='-inf', max='+inf', withscores=True) cache.delete(tmp_key) return [keyword[0].decode('utf-8') + u'__' + str(keyword[1]).decode('utf-8') for keyword in keywords]
def handle(self, *args, **options): path = os.getcwd() + "/data/" # files = os.listdir(path) # # for file_name in files: # file = open(path + file_name, 'r') # lines = file.readlines() # for line in lines: # try: # load = False # line.replace('::::::', ':::') # line.replace(':::::', ':::') # line.replace('::::', ':::') # tags_str = line.split(':::')[3] # tags = tags_str.split('__') # for tag in tags: # if cache.exists(name='%s%s' %(TMP_KEY, tag)): # load = True # break # # if load: # tag = tags[0] # for last in tags[1:]: # key1 = '%s%s' %(BASIC_KEY, tag) # key2 = '%s%s' %(BASIC_KEY, last) # cache.zincrby(name=key1, value=last, amount=damping) # cache.zincrby(name=key2, value=tag, amount=damping) # # except Exception as err: # print(err) # continue path = path + "basic_tags/" keys = cache.keys("%s*" % BASIC_KEY) file = open(path + "relations", "w") for key in keys: print("load %s" % key[15:]) data = cache.zrevrangebyscore(name=key, max="+inf", min="-inf", withscores=True) name = key[15:] values = "__".join([l[0] + ":::" + str(l[1]) for l in data]) file.write(name + "\t" + values + "\n") file.close()
def get(self, word): try: return cache.zrevrangebyscore(name=self.cache_key_prefix + word, max='+inf', min="-inf") except Exception as err: logger("cache_key %s for err %s" %(self.cache_key_prefix + word, err)) return None
def get_info(self): key = '%s%s' %(cache_key, self.name) results = cache.zrevrangebyscore(name=key, min='-inf', max='+inf', withscores=False) return results