[问题] 大量文档找关键字的方法?

楼主: neil24 (neil24)   2019-06-08 07:06:18
各位先进好,我有数千个TXT档,每个档案约3、4百MB大小,档案内容就一行是一个句子
,然后我手头有10个关键字,我要找数千个TXT档里有哪些句子有提到关键字。
我目前作法是一个档案一个档案一行一行去跟关键字比对,有对应到的就抛出来。
因为后续还会有其他关键字,又要一个一个档案去爬,太耗时间,所以想请各位先进赐个
关键字,有没有可以改进效率的方法或套件可以推荐,感谢。
6/11-
后来想试试multiprocess的概念,我后来改写的程式码:
https://github.com/ashkayle24/KeyWord_hit/blob/master/keyword_hit-test.py
不知这样的用法对不对,cpu一直在90%以上在跑,可否有先进给个指导...
作者: charlie11438 (煞气a查理)   2019-06-08 08:55:00
用numpy读并使用嵌套,虽然不知道速度如何,不过应该可以https://i.imgur.com/7xSEI7e.jpg可以用这个试试看
作者: pmove (金疾柠檬)   2019-06-08 10:25:00
如果只是要结果,建议找现成软件,它可能用C写,会比您用Python 写快的多。
作者: TitanEric (泰坦)   2019-06-08 12:33:00
multi thread去找 可以参考表现非常优秀的silver searcher咦 等等 你这个需求就直接用ag就好 不用自己写
楼主: neil24 (neil24)   2019-06-08 15:11:00
谢谢各位大大给的建议,请问ag是什么?
作者: zo6596001 (超帅肥宅)   2019-06-08 15:42:00
不知道Windows 的 Linux subsystem 有没有grepLinux 的 find 跟 grep 可以快速找特定档案的关键字有这两个指令的话,用subprocess popen 就可以了。作业系统会帮你处理好其他事,只要收结果就好。
作者: TitanEric (泰坦)   2019-06-08 18:10:00
ag就是silver searcher 比grep -r还要快
作者: ptoyhawinf (沉睡的毛利小五郎)   2019-06-08 18:31:00
如果档案会一直重复查询,我会丢进数据库,以后下query指令查询即可。
作者: vi000246 (Vi)   2019-06-08 23:33:00
windows有winGrep
作者: king22649   2019-06-09 02:23:00
用 solr 或 elasticsearch吧?
楼主: neil24 (neil24)   2019-06-09 06:38:00
我有搜到想用solr,但小弟程式新手,目前搜到的教学文都看不太懂,就汇档建立索引这块的逻辑不太能理解
作者: Yshuan (倚絃)   2019-06-10 11:46:00
我工作上是用grep windows的portable, 觉得堪用
楼主: neil24 (neil24)   2019-06-11 09:34:00
我暂时是用multiprocess的概念去爬,一开始爬档时间省一半左右,但后续的速度越慢了,持续研究中...
作者: king22649   2019-06-11 11:34:00
用elasticsearch吧 基本python包好好有lib

Links booklink

Contact Us: admin [ a t ] ucptt.com