我正在使用 Lucene/.NET 来实现一个数字搜索引擎。
我想从一个大范围内过滤数字,这取决于字符串数组中存在的数字。
我使用了以下代码:
int startValue = 1;
endValue = 100000;
//Assume that the following string array contains 12000 strings
String[] ArrayOfTerms = new String[] { "1", "10",................. , "99995"};
public String[] GetFilteredStrings(String[] ArrayOfTerms)
{
List<String> filteredStrings = new List<String>();
for (int i = startValue; i <= endValue; i++)
{
int index = Array.IndexOf(ArrayOfTerms,i.ToString());
if( index != -1)
{
filteredStrings.Add((String)ArrayOfTerms.GetValue(index));
}
}
return filteredStrings.ToArray();
}
现在,我的问题是它搜索从 1 到 100000 的每个值并且花费了太多时间。有时我的应用程序挂起。
你们中的任何人都可以帮助我如何改善这个性能问题吗?我不知道缓存的概念,但我知道 Lucene 支持缓存过滤器。我应该使用缓存过滤器吗?提前致谢。