与lucene相交的边界

时间:2010-03-24 12:10:20

标签: java lucene range r-tree

我正在使用Lucene,我正在尝试找到一种索引和检索具有ranged属性的文档的方法。

例如我有:

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

而且我想搜索范围与特定间隔相交的所有文档,在上面的示例中,如果我搜索Price in [55 TO 65]我应该Document 2并且Document 3作为结果。

我不认为单独使用NumericRangeQueries可以解决问题,我需要使用类似于R-tree的方法处理索引,但它们是否在Lucene中实现?另外,我想我需要的应该是MultiTermQuery的子类,因为查询Price in [55 TO 65]有两个边界,但我没有看到任何适合MultiTermQuery的子类。

感谢任何帮助, 感谢,

西尔维奥

P.S。我正在使用Lucene 2.9.0,但如果需要,我可以更新到最新版本。

1 个答案:

答案 0 :(得分:1)

尝试的一个简单选项是,在索引时,只需将范围扩展到范围内的每个离散值。所以[30到50]将被索引为30,31,32,33,34等。然后使用正常范围查询来查询范围。只要没有大量离散值(数百万),这可能就足够了。