作者neil24 (neil24)
看板Python
标题[问题] 大量文档找关键字的方法?
时间Sat Jun 8 07:06:18 2019
各位先进好,我有数千个TXT档,每个档案约3、4百MB大小,档案内容就一行是一个句子
,然後我手头有10个关键字,我要找数千个TXT档里有哪些句子有提到关键字。
我目前作法是一个档案一个档案一行一行去跟关键字比对,有对应到的就抛出来。
因为後续还会有其他关键字,又要一个一个档案去爬,太耗时间,所以想请各位先进赐个
关键字,有没有可以改进效率的方法或套件可以推荐,感谢。
6/11-
後来想试试multiprocess的概念,我後来改写的程式码:
https://github.com/ashkayle24/KeyWord_hit/blob/master/keyword_hit-test.py
不知这样的用法对不对,cpu一直在90%以上在跑,可否有先进给个指导...
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.234.198.228 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1559948780.A.D63.html
1F:推 charlie11438: 用numpy读并使用嵌套,虽然不知道速度如何,不过应06/08 08:55
2F:→ charlie11438: 该可以06/08 08:55
4F:→ charlie11438: 可以用这个试试看06/08 08:56
5F:→ pmove: 如果只是要结果,建议找现成软体,它可能用C写,会比您用Py06/08 10:25
6F:→ pmove: thon 写快的多。06/08 10:25
7F:推 TitanEric: multi thread去找 可以参考表现非常优秀的silver sea06/08 12:33
8F:→ TitanEric: rcher06/08 12:33
9F:→ TitanEric: 咦 等等 你这个需求就直接用ag就好 不用自己写06/08 12:33
10F:→ neil24: 谢谢各位大大给的建议,请问ag是什麽?06/08 15:11
11F:推 zo6596001: 不知道Windows 的 Linux subsystem 有没有grep06/08 15:42
12F:推 zo6596001: Linux 的 find 跟 grep 可以快速找特定档案的关键字06/08 15:43
13F:→ zo6596001: 有这两个指令的话,用subprocess popen 就可以了。 06/08 15:45
14F:→ zo6596001: 作业系统会帮你处理好其他事,只要收结果就好。06/08 15:50
15F:推 TitanEric: ag就是silver searcher 比grep -r还要快 06/08 18:10
16F:推 ptoyhawinf: 如果档案会一直重复查询,我会丢进资料库,以後下quer06/08 18:31
17F:→ ptoyhawinf: y指令查询即可。06/08 18:31
18F:推 vi000246: windows有winGrep06/08 23:33
19F:推 king22649: 用 solr 或 elasticsearch吧?06/09 02:23
20F:→ neil24: 我有搜到想用solr,但小弟程式新手,目前搜到的教学文都06/09 06:38
21F:→ neil24: 看不太懂,就汇档建立索引这块的逻辑不太能理解06/09 06:38
22F:推 Yshuan: 我工作上是用grep windows的portable, 觉得堪用06/10 11:46
23F:→ neil24: 我暂时是用multiprocess的概念去爬,一开始爬档时间省一半06/11 09:34
24F:→ neil24: 左右,但後续的速度越慢了,持续研究中...06/11 09:34
※ 编辑: neil24 (49.219.131.83 台湾), 06/11/2019 11:00:31
25F:→ king22649: 用elasticsearch吧 基本python包好好有lib 06/11 11:34
※ 编辑: neil24 (49.219.131.83 台湾), 06/11/2019 16:04:24