2010-03-24 81 views
1

我正在使用Lucene,并试图找到一种方法来索引和检索具有范围属性的文档。与lucene相交的边界

比如我有:

Document 1: Price:[30 TO 50] 
Document 2: Price:[45 TO 60] 
Document 3: Price:[60 TO 70] 

而且我想搜索为所有的区域相交的特定区间的文件,在上面的例子,如果我搜索Price in [55 TO 65]我应该得到Document 2Document 3作为结果。

我不认为NumericRangeQueries本身会做的伎俩,我需要在类似于R-trees的索引上工作,但它们是在Lucene中实现的吗?另外,我想我需要的应该是MultiTermQuery的一个子类,因为查询Price in [55 TO 65]有两个边界,但在MultiTermQuery的子类中没有看到任何适合的东西。

任何帮助表示赞赏,感谢 ,

西尔维奥

附:我使用的是Lucene 2.9.0,但如果需要,我可以更新到最新版本。

回答

1

一个简单的选项就是在索引时间内简单地将范围扩展到范围内的每个离散值。因此[30至50]将被索引为30,31,32,33,34等,然后使用正常范围查询来查询范围。只要没有大量的离散值(数百万),这可能表现不错。

+0

这样我就会被绑定到我用来离散间隔的值的数量,也会产生很多字段(每个离散值一个),这会使我的文档模式膨胀。当然,这是一个可能的解决方案,但我会保留它作为最后的手段 –

+0

您不需要创建单独的字段。所有值都将放在同一个字段中,不需要更改文档模式。 – bajafresh4life

相关问题