我正在使用 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 2
和Document 3
作为结果。
我认为 NumericRangeQueries 本身并不能解决问题,我需要使用类似于 R 树的东西来处理索引,但是它们是在 Lucene 中实现的吗?另外,我认为我需要的应该是 MultiTermQuery 的子类,因为查询 Price in [55 TO 65]
有两个边界,但我在 MultiTermQuery 的子类中没有看到任何合适的内容。
感谢任何帮助, 谢谢,
西尔维奥
附注我使用的是 Lucene 2.9.0,但如果需要,我可以更新到最新版本。
最佳答案
可以尝试的一个简单选择是,在索引期间,只需将范围扩展到范围中的每个离散值。所以[30 TO 50]会被索引为30、31、32、33、34等。然后使用正常范围查询来查询范围。只要没有大量的离散值(数百万),这可能表现得足够好。
关于java - 与 lucene 相交的边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2507456/