我应该如何过滤RavenDB Lucene搜索的结果?

我应该如何过滤RavenDB Lucene搜索的结果?,ravendb,Ravendb,假设我有一个User类,如下所示: public class User { public bool IsActive {get;set;} public string[] Tags{get;set;} public string Description {get;set;} } var results = (from u in Session.Query<User>("YourUserIndex") where u.IsActive &

假设我有一个
User
类,如下所示:

public class User
{
  public bool IsActive {get;set;}
  public string[] Tags{get;set;}
  public string Description {get;set;}
}
var results = (from u in Session.Query<User>("YourUserIndex")
              where u.IsActive && u.Tags.Any(x=>x == "hello") && x.Tags.Any(x=>x=="world")
              select u)
              .Search(x=>x.Description, "abject failure")
              .ToList();
from u in docs.Users
select new { u.IsActive, u.Tags, u.Description };
我想使用RavenDB搜索符合以下条件的用户集:

  • IsActive
    =true
  • 标记
    同时包含“hello”和“world”
  • Description
    有以下短语“彻底失败”
我已经研究了Lucene查询语法,我甚至还做了一些工作,但是创建一个基于文本的Lucene查询字符串需要大量的组合字符串构建,这让我感觉非常笨拙。我不愿意把我的代码放在这里,因为它很臭

我想我要做的是提交一个Lucene
搜索
来查找描述和标记,然后使用IsActive字段的
Where
子句对其进行过滤,可能是这样的。但是我迷路了

我使用的是最新的官方版本(960),因此在此之后的所有groovy内容都还没有提供给我。例如,is verboten as 960似乎不支持
.as()
扩展

问题

如何构造所需的索引和查询以执行结合以下内容的搜索:

  • 单个约束,例如
    IsActive
  • 集合约束,例如
    标记
  • 自由文本约束,例如
    Description
要返回
用户
对象的强类型列表


感谢您提供的所有代码示例或指针。

您可以这样查询:

public class User
{
  public bool IsActive {get;set;}
  public string[] Tags{get;set;}
  public string Description {get;set;}
}
var results = (from u in Session.Query<User>("YourUserIndex")
              where u.IsActive && u.Tags.Any(x=>x == "hello") && x.Tags.Any(x=>x=="world")
              select u)
              .Search(x=>x.Description, "abject failure")
              .ToList();
from u in docs.Users
select new { u.IsActive, u.Tags, u.Description };
您需要将描述字段标记为已分析