为自己制作一个与电影/电视节目有关的小节目。目前,我已将所有电影格式化为txt文件。每行有一个电影片名。
这个txt文件有一个巨大的电影范围(超过100 of ),我有一个AutoComplete ComboBox。(建议用户自动完成电影名称)。
我现在使用的守则:
private void addComboBox()
{
try
{
using (StreamReader reader = new StreamReader("movies.txt"))
{
String line;
while ((line = reader.ReadLine()) != null)
{
String editline = line.TrimStart();
//System.Console.WriteLine(editline);
movies.Items.Add(editline);
}
}
}
catch (IOException e)
{
System.Console.WriteLine("Error opening the file of movies! " + e);
}
}现在,使用代码,它需要大约20秒的时间来启动程序,当在里面输入电影时,它是安静的、迟缓的。(估计270万行的名字会出现这种情况)
有什么更好的方法吗?别以为我看到的问题和我的完全一样。谢谢。
发布于 2015-09-15 00:35:00
我建议您将此数据导入到任何数据库的表中。这样你就可以利用这么快的索引了。
如果您需要更多的标度和快速方法,您可以尝试特定的文本索引数据库,例如Cassandra、Dynamo、Mongo、ElasticSearch和其他数据库。
但是在一个简单的场景中,我相信如果您使用任何数据库,即使您选择Access或SQLite,您也会赢很多。
您也可以尝试一些算法,如二叉树或HashTables,或在谷歌上搜索“最佳文本搜索算法”,但在现实世界中,我会运行一个数据库。
之后,您只需进行异步调用就可以得到一个有限的列表(即前20位),并且可以以最小的方式加载选项。
发布于 2015-09-15 00:37:40
一种选择是将数据源设置为SQL数据库--可能是SQLite使其保持本地和简单,或者实现高效的搜索算法(如特瑞 )。
https://stackoverflow.com/questions/32575773
复制相似问题