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

时间:2015-08-19 17:18:00

标签: lucene ravendb lucene.net ravendb-studio

我试图编写一个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中运行查询会返回SequentialNumber范围内123-321不在的所有文档。我希望它只返回100000123作为SequentialNumber的文档。我一直在向谷歌寻求帮助,但到目前为止,我还没有找到任何东西来引导我走向正确的方向。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

RavenDB以两种方式索引数字,一次是字符串(这是你在这里看到的),一次是数字形式。 对于范围查询,请使用:

"FALSE"

Ix前缀表示您使用的是int32