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,支持连接池。...

用 misaka 实现 gfm Markdown 格式

misaka 是python 世界性能最好的 markdown 解析库,gfm (GitHub Flavored Markdown)是 github 扩展的格式。可以通过下面的方式用 misaka 实现 gfm 解析...

用github 帐号登录之tornado 实现

用github 帐号登录之tornado 实现,主要面向开发者的可以使用这个第三方登录。在gist 上发现的,直接拿来,简单修改一下。...

ssdb python 接口提速

SSDB 是个新兴的数据库,其数据库的特点简单,性能高效,有好多python 接口,个人比较后选择一个最理想的,但还有提速空间,这里仅作经验分享。...

ssdb 在小内存vps 上的配置

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

Leave a Comment