【问题标题】:RavenDB fast substring searchRavenDB 快速子串搜索
【发布时间】:2012-06-03 04:55:44
【问题描述】:

我可能有数万亿个字符串序列。我正在寻找快速的子字符串搜索。

我已经创建了一个索引。当我试图获得一些结果时(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"}
        }
    });

【问题讨论】:

  • “我可能有数万亿个字符串序列。”关于夸大其词,我已经告诉过你一百万次了。

标签: c# substring ravendb


【解决方案1】:

尼尔0, 您可以使用 RavenDB 进行非常快速的 NGram 搜索,是的。 见:https://gist.github.com/1669767

【讨论】:

  • 你不会得到比 RavenDB 的作者更好的答案!
  • a better answer有例子,解释等。
【解决方案2】:

Ayende 出色的 NGram 分析器似乎是为比 RavenDB 现在使用的旧版本的 Lucene 制作的,所以我为像我这样困惑的人制作了它的更新版本。请参阅:http://pastebin.com/a78XzGDk。所有功劳归于 Ayende。

要使用它,请将其放入库中,构建它并将其放入 RavenDB 目录中 Server 下的 Analyzers 文件夹中。然后像这样创建一个索引:

public class PostByNameIndex : AbstractIndexCreationTask<Posts>
{
    public PostByNameIndex()
    {
        Map = posts => posts.Select(x => new {x.Name});
        Analyze(x => x.Name, typeof(NGramAnalyzer).AssemblyQualifiedName);
     }
}

但正如我所说,感谢 Ayende 创造了这个。

【讨论】:

    猜你喜欢
    • 2011-08-31
    • 2012-04-01
    • 2013-01-20
    • 1970-01-01
    • 2013-01-06
    • 2016-09-18
    • 2018-10-10
    • 1970-01-01
    • 2011-03-01
    相关资源
    最近更新 更多