本文整理汇总了Python中addok.db.DB.sadd方法的典型用法代码示例。如果您正苦于以下问题:Python DB.sadd方法的具体用法?Python DB.sadd怎么用?Python DB.sadd使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类addok.db.DB
的用法示例。
在下文中一共展示了DB.sadd方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: try_fuzzy
# 需要导入模块: from addok.db import DB [as 别名]
# 或者: from addok.db.DB import sadd [as 别名]
def try_fuzzy(helper, tokens, include_common=True):
if not helper.bucket_dry or not tokens:
return
helper.debug('Fuzzy on. Trying with %s.', tokens)
tokens.sort(key=lambda t: len(t), reverse=True)
allkeys = helper.keys[:]
if include_common:
# As we are in fuzzy, try to narrow as much as possible by adding
# unused commons tokens.
common = [t for t in helper.common if t.db_key not in helper.keys]
allkeys.extend([t.db_key for t in common])
for try_one in tokens:
if helper.bucket_full:
break
keys = allkeys[:]
if try_one.db_key in keys:
keys.remove(try_one.db_key)
if try_one.isdigit():
continue
helper.debug('Going fuzzy with %s', try_one)
neighbors = make_fuzzy(try_one, max=helper.fuzzy)
if len(keys):
# Only retains tokens that have been seen in the index at least
# once with the other tokens.
DB.sadd(helper.query, *neighbors)
interkeys = [pair_key(k[2:]) for k in keys]
interkeys.append(helper.query)
fuzzy_words = DB.sinter(interkeys)
DB.delete(helper.query)
# Keep the priority we gave in building fuzzy terms (inversion
# first, then substitution, etc.).
fuzzy_words = [w.decode() for w in fuzzy_words]
fuzzy_words.sort(key=lambda x: neighbors.index(x))
else:
# The token we are considering is alone.
fuzzy_words = []
for neighbor in neighbors:
key = dbkeys.token_key(neighbor)
count = DB.zcard(key)
if count:
fuzzy_words.append(neighbor)
helper.debug('Found fuzzy candidates %s', fuzzy_words)
fuzzy_keys = [dbkeys.token_key(w) for w in fuzzy_words]
for key in fuzzy_keys:
if helper.bucket_dry:
helper.add_to_bucket(keys + [key])