我试图编写一个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中运行查询会返回SequentialNumber
范围内123-321
不在的所有文档。我希望它只返回100000123
作为SequentialNumber
的文档。我一直在向谷歌寻求帮助,但到目前为止,我还没有找到任何东西来引导我走向正确的方向。
我做错了什么?
答案 0 :(得分:1)
RavenDB以两种方式索引数字,一次是字符串(这是你在这里看到的),一次是数字形式。 对于范围查询,请使用:
"FALSE"
Ix前缀表示您使用的是int32