我可能有数万亿的字符串序列。我正在寻找一个快速的子串搜索。
我已经创建了一个索引。当我尝试获取一些结果( x => x.StartWith)时,在300万个对象数据库上大约需要2秒。
处理5亿个对象可能需要多长时间?
有没有可能让RavenDB搜索速度更快?
store.DatabaseCommands.PutIndex("KeyPhraseInfoByWord", new Raven.Client.Indexes.IndexDefinitionBuilder<KeyPhraseInfo>
{
Map = wordStats => from keyPhraseInfo in keyPhraseInfoCollection
select new { keyPhraseInfo.Key },
Analyzers =
{
{ x => x.Key, "SimpleAnalyzer"}
}
});发布于 2012-05-29 21:58:43
Nier0,你可以使用RavenDB进行非常快速的NGram搜索,是的。请参阅:https://gist.github.com/1669767
发布于 2013-02-28 20:36:35
Ayende出色的NGram分析器似乎是为比RavenDB现在使用的Lucene旧版本制作的,所以我为像我这样困惑的人做了一个更新版本。请参阅:http://pastebin.com/a78XzGDk所有的功劳都归功于Ayende。
要使用它,请将其放入库中,构建它,并将其放入RavenDB目录中服务器下的Analyzers-文件夹中。然后像这样创建一个索引:
public class PostByNameIndex : AbstractIndexCreationTask<Posts>
{
public PostByNameIndex()
{
Map = posts => posts.Select(x => new {x.Name});
Analyze(x => x.Name, typeof(NGramAnalyzer).AssemblyQualifiedName);
}
}但正如我所说的,所有的荣誉和感谢Ayende创造了这个。
https://stackoverflow.com/questions/10791164
复制相似问题