1

「メッセージ」クラスがあります:

public class User { public string Name { get;set; } /*Other properties*/ }
public class Message {
    public User From { get;set; }
    public ICollection<User> To { get;set; }
    public string Title { get;set; }
    /* Others */ 
}

そして、私はそのように定義されたインデックスを持っています:(はい、「私はチュートリアルビデオに従っています」からまっすぐに)

public class Message_ToFromTitle : AbstractIndexCreationTask
{
    public override IndexDefinition CreateIndexDefinition()
    {
        return new IndexDefinition
        {
            Map = "from m in docs.Messages select new { Query = new[] { m.Title, m.From.Name, m.To.Select(r => r.Name), } }",
            Indexes = {{"Query", FieldIndexing.Analyzed}}
        };
    }
}

Management Studioでは、「To」、「From」、または「Title」に Chris をQuery:Chris含めてすべてをうまくクエリできます。これは素晴らしいことです。Messages

私の問題は、.NET からクエリを実行する方法です。私はもう試した:

session.Advanced.LuceneQuery<Message, Message_ToFromTitle>().Where("Query:Chris");

これは機能しますが、私やりたいことは次のとおりです。

session.Query<Message, Message_ToFromTitle>().Where(m => m == "Chris");

しかし、どうにかしてQuery. Advancedルートは私だけに開かれていますか? インデックスの定義を変更できて非常に満足しています。C# でコンパイルされない最後の部分で非ジェネリックAbstractIndexCreationTaskを使用しましたが、Raven で必要な方法で解釈されますが、m.To.Select(r=>r.Name)必要に応じて、喜んで一般的なものに変更します!

4

1 に答える 1