2013-03-27 58 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(),并解决问题。

虽然我同意其他人,你应该只是使用这个数据库。