本文整理汇总了Python中addok.db.DB.zrank方法的典型用法代码示例。如果您正苦于以下问题:Python DB.zrank方法的具体用法?Python DB.zrank怎么用?Python DB.zrank使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类addok.db.DB
的用法示例。
在下文中一共展示了DB.zrank方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: only_commons
# 需要导入模块: from addok.db import DB [as 别名]
# 或者: from addok.db.DB import zrank [as 别名]
def only_commons(helper):
if len(helper.tokens) == len(helper.common):
# Only common terms, shortcut to search
keys = [t.db_key for t in helper.tokens]
if helper.geohash_key:
keys.append(helper.geohash_key)
helper.debug('Adding geohash %s', helper.geohash_key)
if len(keys) == 1 or helper.geohash_key:
helper.add_to_bucket(keys)
if helper.bucket_dry and len(keys) > 1:
count = 0
# Scan the less frequent token.
helper.tokens.sort(key=lambda t: t.frequency)
first = helper.tokens[0]
if first.frequency < config.INTERSECT_LIMIT:
helper.debug('Under INTERSECT_LIMIT, brut force.')
keys = [t.db_key for t in helper.tokens]
helper.add_to_bucket(keys)
else:
helper.debug('INTERSECT_LIMIT hit, manual scan on %s', first)
others = [t.db_key for t in helper.tokens[1:]]
ids = DB.zrevrange(first.db_key, 0, 500)
for id_ in ids:
count += 1
if all(DB.sismember(f, id_) for f in helper.filters) \
and all(DB.zrank(k, id_) for k in others):
helper.bucket.add(id_)
if helper.bucket_full:
break
helper.debug('%s results after scan (%s loops)',
len(helper.bucket), count)