pyList

ssdb 全文搜索的实现

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

ssdb 全文搜索的实现

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

如下一个例子:

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)

原理

遍历某个 分析每条数据的内容,如果包含目标关键字则选中,可见效率比较低,酌情处理或可预见性的建立索引。

本文标签: ssdb 全文 搜索 实现
本文网址: https://pylist.com/t/1464317432 (转载注明出处)
如果你有任何建议或疑问可以在下面 留言
发表第一条评论!
验证码图片
相关推荐