6

おそらく何兆もの文字列シーケンスがあります。高速な部分文字列検索を探しています。

索引を作成しました。results( 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"}
        }
    });
4

2 に答える 2

12

Nier0 さん、RavenDB を使って NGram 検索を高速に実行できますね。参照: https://gist.github.com/1669767

于 2012-05-29T13:58:42.663 に答える
8

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に感謝します。

于 2013-02-28T12:36:35.483 に答える