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-312
和 9000-18000
,除了一个 100000123
。 ExternalId
字段是对父文档的引用,对于此测试,所有文档都将字段设置为 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
我正在尝试编写一个 lucene 查询来过滤 RavenDB 中的一些数据。这个特定集合中的一些文档被分配了一个序列号,并且有效范围不是连续的(例如,一个范围可以从 100-200,另一个范围可以从 1000 到 1400)。我想使用 Raven Studio(v2.5,Silverlight 客户端)查询 RavenDB,以检索值超出这些用户定义范围的所有文档。
这是过于简化的文档结构:
{
ExternalId: something/1,
SequentialNumber: 12345
}
为了测试,我添加了 3500 个文档,所有文档的 SequentialNumber
都在以下两个范围之一内:123-312
和 9000-18000
,除了一个 100000123
。 ExternalId
字段是对父文档的引用,对于此测试,所有文档都将字段设置为 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