ssdb 全文搜索的实现

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

ssdb 全文搜索的实现

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

如下一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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)

原理

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

本文网址: https://pylist.com/topic/130.html 转摘请注明来源

Suggested Topics

ssdb go client 推荐

ssdb 数据库以前有过好多介绍,也对python 库有推荐,这次推荐它的 go sdk,支持连接池。...

ssdb 数据库合并的方法

应用场景:原来有两台机器上面都跑ssdb 服务,现在想把另外一台机器上的数据库迁到同一台机器上。...

基于SSDB 的轻论坛

目前由SSDB 数据库驱动的开源项目还不多,这是一个示例,可作为SQL 转NoSQL 设计的参考。...

ssdb 在小内存vps 上的配置

ssdb 是一个数据结构和接口与redis 很相近的NoSQL 数据库,但它对内存依赖不高,数据可直接落到硬盘,所以 ssdb 在小内存上跑得也很欢。...

Leave a Comment