python 如何高效的判断一个长字符串是否包含某些关键字?
一个数据库表中含有一系列的关键字,现在传入一字符串,如何高效的判断数据表中哪些关键字在这个字符串中。
只是一个简单的数据表 包括两个字段 关键字 和 关键字的描述
数据表只有几千条数据 字符串是一句话,包含中文和英文字符,为的是提高查询效率
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
跟python无关,你需要的是AC自动机算法(多模式串匹配)。
而如果是要实现搜索,那么实际上应当使用倒排索引,才能达到最优的效果。
省事点用 sqlite fts4 全文索引好了,这样可以一条字段存入多条关键字,
查询时给句子拆分下加入 OR 语法,select 用下 snippet 函数得到匹配的关键字。
把数据存到 sqlite fts4 全文索引表(sqlite 有在 python 标准库里不需要其他依赖,可以用内存数据库),fts4 默认会按标点和空格分词,所以处理中文时预先插入空格就没问题(插入 \r 之类也行)。
如果要求判断子字符串而不是按单词判断,存入数据时先用空格把字母和字符逐个隔开,查询时也逐个隔开并加上适当引号和 * 号,
而如果是想分词却担心有黄词漏网的话,存入数据和查询句子都用二元分词就可以了。