ssdb 全文搜索

pylist 423

ssdb 作为key-value 数据库,底层没有提供全文搜索的功能,只能在应用层作检索。

过程是:遍历 -> 缓存 搜索结果

如下一个例子:

kw_lower = kw.lower()
mc_key = 'search_kw:' + kw_lower

mc_value = cls.db.get(mc_key)
if mc_value:
    return json.loads(mc_value)

items = []

tb_name = 'article'
limit = 20

go_on = 1
key_start = ''

while go_on:
    kv_list = cls.db.hscan(tb_name, key_start, '', 100)
    if not kv_list:
        break
    for i in range(0, len(kv_list), 2):
        key_start = kv_list[i]
        item = json.loads(kv_list[i + 1])
        if kw_lower in item['title'].lower():
            items.append(item)
            if len(items) > limit:
                go_on = 0
                break

if items:
    cls.db.setx(mc_key, json.dumps(items), 3600)
登录发表评论

桂公网安备 45122402000014号