[問題] 大量文檔找關鍵字的方法?

作者: 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