Lucene.Net 范围子查询未返回预期结果(RavenDB 相关)

Lucene.Net range subquery not returning expected results (RavenDB related)

我正在尝试编写一个 lucene 查询来过滤 RavenDB 中的一些数据。这个特定集合中的一些文档被分配了一个序列号,并且有效范围不是连续的(例如,一个范围可以从 100-200,另一个范围可以从 1000 到 1400)。我想使用 Raven Studio(v2.5,Silverlight 客户端)查询 RavenDB,以检索值超出这些用户定义范围的所有文档。

这是过于简化的文档结构:

{  
   ExternalId: something/1,
   SequentialNumber: 12345
}

为了测试,我添加了 3500 个文档,所有文档的 SequentialNumber 都在以下两个范围之一内:123-3129000-18000,除了一个 100000123ExternalId 字段是对父文档的引用,对于此测试,所有文档都将字段设置为 something/1。这是我提出的 Lucene 查询:

ExternalId: something/1 AND NOT 
(SequentialNumber: [123 TO 321] OR SequentialNumber: [9000 TO 18000])

运行 RavenDB 的 Studio return 中的查询 SequentialNumber 不在 123-321 范围内的所有文档。我希望它仅 return 具有 100000123 作为 SequentialNumber 的文档。我一直在尝试 Google 寻求帮助,但到目前为止我还没有找到任何可以引导我走向正确方向的东西。

我做错了什么?

RavenDB 以两种方式对数字进行索引,一种是字符串形式(这就是您在此处看到的),另一种是数字形式。 对于范围查询,请使用:

SequentialNumber_Range: [Ix123 TO Ix321] OR SequentialNumber_Range: [Ix9000 TO Ix18000])

Ix 前缀表示您使用的是 int32