2013-03-27 24 views
0

朋友,我的單詞列表單詞列表文本文件,字含30萬個字(每行1個字)的文本文件(2MB)按字母順序排列出來。既然它已經排序了,我想要做一個快速的字符串搜索,它必須精確且不區分大小寫。任何想法如何做到這一點?搜索在Android的

讓它儘可能快和不區分大小寫。例如,

如果用戶需要從文本文件中搜索詞「MAT」,輸出必須墊/ MAT,不應該包括配偶,糾結或任何這樣的字眼。輸出應該在最短的時間內生成。

編輯 - 我需要一個像類或算法來做到像模式/匹配或BufferedReader中/掃描儀等的解決方案

+2

呃,你不應該用這個數據庫嗎? – 2013-03-27 15:52:59

+0

僅用1列創建整個數據庫?並且頭頂可能不僅僅是搜索文本文件 – 2013-03-27 15:54:58

+0

考慮到提高搜索速度,頭頂是值得的。您甚至可以通過每個字母表使用平板電腦來削減它,並根據用戶輸入的第一個字母表僅搜索該表格。 – 2013-03-27 15:56:15

回答

0

你最好的辦法可能是妥善存放到數據庫中,以這樣的方式您必須搜索最少量的數據。

每例如每字母表,只有字開始以該字母。 基本上,已經將搜索切割成像300,000/20(26-減去一些罕見字母的罕見字母)。

這將可能已經做了30萬個字,但如果沒有,你甚至可以把它進一步做出一些長度分離。

保存你所有的話到數據庫可能會需要一段時間雖然,但可能不會爲您的應用問題。

1

如果你的單詞列表已經排序我能想到的是使用binary search的最快方式。至於區分大小寫的部分,只需在每個字符串(輸入字符,以及與文件中的字符進行比較)上應用ToUpper()或ToLower(),並解決問題。

雖然我同意其他人,你應該只是使用這個數據庫。