作者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/m.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