我有大量数据,在这种情况下,想象一个String
包含所有文件路径的 80,000 多个数组。
作为文件路径,这意味着它们中的大部分以相同的路径开始,例如,我有超过 50,000 个文件以"/dataset1/subsetAA/childX/"
.
我想允许对这些路径进行自由文本搜索。现在我用一个看起来像这样的简单谓词来做到这一点:
foreach(String term in terms)
if( path.IndexOf( term, StringComparison.OrdinalIgnoreCase ) == -1 )
return false;
return true;
我确实会在输入时保存搜索结果,因此您输入的越多越快,但是最初的几次搜索(例如“ f
”>“ fo
”>“ foo
”)甚至可能需要 3 或 4 秒一台快速的机器。
我想建立一个子字符串索引,以消除我使用的需要IndexOf
,最好是利用公共路径来减少索引大小的索引,我不想消耗太多内存。