可能重複:
do searching in a very big ARPA file in a very short time in java如何在java中使用特定格式在非常大的文件中搜索字符串?
我的文件的格式:
\ DATA \
的ngram 1 = 19
的ngram 2 = 234
的ngram 3 = 1013
\ 1-克:
-1.7132 puluh -3.8008
-1.9782 -3.8368薩圖馬雷
\ 2-克:
-1.5403尋找及體驗dua -1.0560
-3.1626 dalam ini 0.0000
\ 3-克:
-1.8726 ITU擔迪迦
-1.9654 ITU擔untuk
\端\
正如你可以看到我在1的ngram行數, 2和3.不需要讀取整個文件。如果一個輸入字符串是一個單詞的字符串,程序可以在\ 1-grams:part中搜索。如果輸入字符串是雙字串,則程序可以在\ 2-grams中搜索:部分等等。最後,如果程序在文件中找到輸入字符串,它必須返回位於字符串左側和右側的兩個數字。此外,我不得不說,文件的每個部分已經排序。我相信我不必完全讀取文件,並使用索引文件不能解決我的問題。這些方法需要很長時間,我的講師說,搜索必須在不到1分鐘的時間內完成,以處理如此龐大的文件。我認爲最好的辦法是找到一種跳轉到特定行而不是文件字節的方式,但我不知道如何才能做到。如果有人能幫助我解決我的問題,那將會很棒。
我的文件差不多是800MB。我發現使用BufferedReader是一種非常快速讀取文件的好方法,但是當我讀取這樣一個大文件並逐行放入數組時,需要超過30分鐘的時間。
這功課嗎? (你提到一個演講)。你試過什麼了?你可以編輯你的問題,並顯示你到目前爲止嘗試過的一些代碼。 – jmq 2011-02-27 05:28:03
這是一樣的問題http://stackoverflow.com/questions/5127640/do-searching-in-a-very-big-arpa-file-in-a-very-short-time-in-java – andersoj 2011-02-27 05:31:11
那麼除非你有一個明確定義的結構和數據字節,否則你需要掃描整個文件..如果以任何方式記錄文件中的字節位置並將其索引到文件頂部,則無法AFAIK .. – 2011-02-27 05:33:57