为了账号安全,请及时绑定邮箱和手机立即绑定

一个数据库表中含有一系列的关键字,现在传入一字符串,如何高效的判断数据表中哪些关键字在这个字符串中。

一个数据库表中含有一系列的关键字,现在传入一字符串,如何高效的判断数据表中哪些关键字在这个字符串中。

小怪兽爱吃肉 2023-04-16 18:14:39
只是一个简单的数据表 包括两个字段 关键字 和 关键字的描述数据表只有几千条数据 字符串是一句话,包含中文和英文字符,为的是提高查询效率
查看完整描述

2 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

跟python无关,你需要的是AC自动机算法(多模式串匹配)。

而如果是要实现搜索,那么实际上应当使用倒排索引,才能达到最优的效果。


查看完整回答
反对 回复 2023-04-20
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

省事点用 sqlite fts4 全文索引好了,这样可以一条字段存入多条关键字,
查询时给句子拆分下加入 OR 语法,select 用下 snippet 函数得到匹配的关键字。

把数据存到 sqlite fts4 全文索引表(sqlite 有在 python 标准库里不需要其他依赖,可以用内存数据库),fts4 默认会按标点和空格分词,所以处理中文时预先插入空格就没问题(插入 \r 之类也行)。

如果要求判断子字符串而不是按单词判断,存入数据时先用空格把字母和字符逐个隔开,查询时也逐个隔开并加上适当引号和 * 号,

而如果是想分词却担心有黄词漏网的话,存入数据和查询句子都用二元分词就可以了。


查看完整回答
反对 回复 2023-04-20
  • 2 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信