【发布时间】:2025-12-18 00:10:01
【问题描述】:
我有一个“消息”类:
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 中,我可以使用 Query:Chris 之类的内容非常成功地进行查询,它会将所有 Messages 与 Chris 一起显示在“To”、“From”或“Title”中,这很棒。
我的问题是如何从 .NET 查询? 我试过了:
session.Advanced.LuceneQuery<Message, Message_ToFromTitle>().Where("Query:Chris");
可行,但是我想做的是:
session.Query<Message, Message_ToFromTitle>().Where(m => m == "Chris");
但是,raven(非常正确)不知道如何处理“m”,因为大概我需要以某种方式查询Query。
Advanced 路线是唯一对我开放的路线吗?我很高兴更改索引定义,我使用了非通用的AbstractIndexCreationTask,因为我在最后做了一个m.To.Select(r=>r.Name) 位,它不会在 C# 中编译,但以我的方式解释想要在 Raven 中,但如果需要,会并且很乐意更改为通用的!
【问题讨论】: