有100万个关键词存储在文件keyword.txt中,分析一段话中分析出keyword.txt中包含的关键词...
有100万个关键词存储在文件keyword.txt中,分析一段话中分析出keyword.txt中包含的关键词...
假设keyword.txt中内容如下:
百度
贴吧
搜索
......
输入文本:百度与2013年推出贴吧服务。
则命中的关键是:百度、贴吧
求一个高效的算法解决这个问题。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
只能说,这里面太多因素了
输入要做分词,分词这件事就是一个要求很高的算法了
关键词库放txt的,那为了减少io肯定要做内存缓存的,百万级中文关键词(最少是个二字词组吧?)内存放不下,那缓存算法也要考虑,比如怎么筛选出要放内存和继续放文件内存里只存偏移
如果是工程一点的问题,就是说要求能跑一次求多个输入的命中,那显然还得对关键词做分类排序,重新构建内存中的结构来提高命中率。
但是缓存类的问题个人觉得不跑到一个数量级把缓存 热 起来,是效率很低的。
再有一个是硬件因素,内存大肯定全塞进去,塞不进去那就要考虑数据结构,而固态的特性和机械硬盘的特性会影响这个数据结构的设计,比如
block
的大小等等。总而言之,这个问题理论上很难给出特定算法,你还不如全放进数据库,在sql上做优化,至少硬盘/内存这层硬件因素的优化你不需要头疼了。