「メッセージ」クラスがあります:
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)
必要に応じて、喜んで一般的なものに変更します!