我試圖在200,000個文本文件中執行搜索,其大小可能從50kb到5mb不等,總共爲1.7GB。我打算開發一個搜索引擎(只是一個樣本)。 過程是:在一個性能良好的文件中搜索
1) Extract words from each file and store them in a separate file(40,000,000 words)
2) Search each word in each file (40,000,000(words) X 200,000(Files) = 8 X 10^12 searches)
3) Generate boolean Index(650Mb).
所以,大部分這裏所涉及的操作都將在文件(S)或文件(縣)搜索。 (4+小時)
這是我編寫的用於在JAVA中搜索單詞的程序。
count = 0;
BufferedReader reader = new BufferedReader(new FileReader('fileName.txt'));
while ((text = reader.readLine()) != null) {
if(text.indexOf(searchString) != -1)
{
if(text.equals(searchString))
{
System.out.print('Word Found in line number '+count);
break;
}
}
count++;
}
計劃在Python:
count = 0
file = open(filePath)
with file as f :
for line in f:
count += 1
if(line.index(searchWord))
print("Word found in line number"+count)
輸出是完美的,但它需要大量的時間。語言對我來說並不是一個考慮的標準。我正在尋找更好的表現。有沒有什麼辦法可以解決這個問題。由於它大部分是搜索過程,是否有任何完美的方式,因爲它正在搜索大塊小塊。
(我的電腦配置:8GB內存,i7處理器第四代)
所以你試圖在Java中實現'grep'? – devnull
你爲什麼在Java和Python中工作?您想要哪種語言的解決方案? – wnnmaw
你需要編寫一個程序嗎?或者你只需要尋找一個工具來做到這一點? – Derek