1

我正在尝试对 RavenDB Lucene 索引执行查询并对结果进行分页。

我有以下代码:

        IDocumentQuery<Post> q = Session.Advanced.LuceneQuery<Post, Posts_Search>()
            .WhereContains("BodyHtml", query)
            .OrElse()
            .WhereContains("Title", query)
            .AddOrder("Published", true)
            .Skip(4).Take(4);

(为了一个简单的示例,添加了最后一对 Skip 和 Take)。

此查询始终返回与我的查询匹配的所有 22 个文档,而不仅仅是 4 个,如我所料。

我究竟做错了什么 ?

4

2 回答 2

2

此问题发生在最新的稳定版本 (206) 上。

我现在已经下载了最新的不稳定版本(251),通过这个版本,我的代码可以按预期工作。我想这是我使用的版本中的一个错误。如果我从 RavenDB 小组中的问题中得到任何更有意义的见解,我会确保将其发布在这里。

于 2011-01-13T22:07:21.680 回答
0

只是一个猜测,因为我不知道 RavenDB。但也许 Raven 提供者不支持跳过或采取。

您可以尝试在 .AddOrder 之后转换为 IEnumerable 来验证这一点。(然后您将使用 Linq to Objects 来跳过和获取,请注意您仍然会首先从数据库中获取所有记录)

  ...
  .AddOrder("Published",True)
  .AsEnumerable()
  .Skip(4).Take(4);
于 2011-01-12T20:13:55.820 回答