ssdb 作为key-value 数据库,底层没有提供全文搜索的功能,只能在应用层作检索。
过程是:遍历 -> 缓存 搜索结果
如下一个例子:
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 转摘请注明来源